Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql EAV correspond à la ligne en tant que valeur de propriété du champ ou de l'entité

Vous pouvez utiliser plusieurs jointures à gauche pour ce faire.

SELECT 
    o.create_date,
    o.title,
    o.author,
    op1.value AS start_date,
    op2.value AS end_date,
    ...
FROM object o
LEFT JOIN object_properties op1 ON op1.object_id=o.object_id AND op1.type_id=1
LEFT JOIN object_properties op2 ON op2.object_id=o.object_id AND op2.type_id=2

Les valeurs qui n'ont pas de propriétés finiront par être nulles.

Avec cette méthode, vous n'avez pas non plus besoin d'avoir une seconde requête pour obtenir les propriétés.

MODIFIER Si vous ne souhaitez pas récupérer les valeurs nulles, omettez le left partie de la left join .