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

SQL JOIN en tant que ligne unique avec des valeurs enfants en tant que colonnes et possibilité de ORDER BY valeur de relation enfant

Une seule ligne par contact :

SELECT 
    contacts.id,
    contacts.first_name,
    contacts.last_name,
    GROUP_CONCAT(IF(field_values.field_id = 2, field_values.value, NULL)) AS email,
    GROUP_CONCAT(IF(field_values.field_id = 1, field_values.value, NULL)) AS field_1
FROM contacts 
LEFT JOIN field_values ON contacts.id = field_values.contact_id
GROUP BY contacts.id
ORDER BY email;.  -- it is optional, only include if you want to sort result by ascending emails.