2010-10-12 6 views
0

J'essaie d'exécuter une requête SELECT à l'aide d'une clause GROUP BY, mais j'ai également besoin d'accéder aux données de plusieurs lignes et de les concaténer en une seule colonne.SQL GROUP BY - Plusieurs résultats dans une colonne?

Voici ce que j'ai jusqu'à présent:

SELECT 
COUNT(v.id) AS quantity, 
vt.name AS name, 
vt.cost AS cost, 
vt.postage_cost AS postage_cost 
FROM vouchers v 
INNER JOIN voucher_types vt 
ON v.type_id = vt.id 
WHERE 
v.order_id = 1 AND 
v.sold = 1 
GROUP BY vt.id 

Ce qui me donne les quatre premières colonnes j'ai besoin dans le format suivant.

quantity | name | cost | postage_cost 
2   X  5   1 
2   Y  6   1 

Cependant, je voudrais aussi une cinquième colonne à afficher, montrant tous les codes associés à chaque ligne de l'ordre comme celui-ci:

code 
ABCD, EFGH 
IJKL, MNOP 

Lorsque la virgule valeurs séparées sont extraites de la table de bons.

Est-ce possible? Tout conseil serait apprécié.

Merci

Répondre

2

C'est ce que GROUP_CONCAT fait. En supposant que la colonne est appelée code, vous devez ajouter ,GROUP_CONCAT(v.code) As Codes à votre liste select.

+0

Merci! Je n'avais jamais entendu parler de ça avant – Dan