J'ai deux tableaux, mots clés et données.
Les mots-clés de table ont 2 colonnes (id, mot-clé), les données de table ont 3 colonnes (id [clé étrangère de mots-clés.id], nom, valeur).
J'utilise cette requête:
SELECT k.id, d.value, d.name
FROM keywords AS k
INNER JOIN data as d ON k.id = d.id
il renvoie quelque chose comme:
1 123 name1
1 456 name2
2 943 name1
3 542 name1
3 532 name2
3 682 name3
Chaque identifiant peut avoir des valeurs de 0 à 3 (peut-être plus à l'avenir).
Comment puis-je récupérer toutes les lignes avec le même identifiant dans la même ligne?
Comme
1 123 456
2 943
3 542 532 682
Je veux le faire parce que je veux pouvoir trier les valeurs.
Utilisez GROUP_CONCAT()
comme ceci:
SELECT k.id, GROUP_CONCAT(d.value)
FROM keywords AS k
INNER JOIN data as d ON k.id = d.id
GROUP BY k.id
Vous devrez peut-être également faire ORDER BY d.name
pour obtenir l'ordre exact des valeurs comme vous le souhaitez. Comme ça:
SELECT k.id, GROUP_CONCAT(d.value ORDER BY d.name separator ' ')
FROM keywords AS k
INNER JOIN data as d ON k.id = d.id
GROUP BY k.id