2017-08-17 4 views
0

voici deux tableaux:comment grouper la sélection de l'autre table comme une colonne en SQL?

a:

+-----+------------------------+ 
| id | conten     | 
+-----+------------------------+ 
| 1 | q.      | 
| 2 | q.      | 
| 3 | s.      | 
| 4 | g      | 
| 1 | a      | 
| 2 | a      | 
+-----+------------------------+ 

b:

+-----+------------------------+ 
| id | type     | 
+-----+------------------------+ 
| 1 | I.      | 
| 2 | II.     | 
| 3 | III.     | 
| 4 | IV      | 
| 5 | V      | 
| 6 | VI      | 
+-----+------------------------+ 

Est-il possible de choisir parmi a et b de sorte que pour un id 2, il y aura un champ supplémentaire qui regroupe tout le contenu de cet identifiant? le résultat de sélection devrait être quelque chose comme ceci:

+-----+------------------------+-----------+ 
| id | type     | contents | 
+-----+------------------------+-----------+ 
| 2 |I.      | q,a  | 
+-----+------------------------+-----------+ 

Edité BTW, s'il y a une façon de le faire par sqlahcmey, ce serait doux.

+1

Oui GROUP_CONCAT avec un serveur – RiggsFolly

+0

mysql ou sql? – Eli

+0

@Eli mysql. Désolé pour le mauvais tag –

Répondre

1
SELECT b.id, b.type, IFNULL(GROUP_CONCAT(a.conten), '') AS contents 
FROM b 
LEFT JOIN a ON a.id = b.id 
GROUP BY b.id 

Voir How do I write a group_concat function in sqlalchemy? pour savoir comment traduire GROUP_CONCAT à SQLAlchemy.

+0

Désolé de vous déranger @barmar Mais à quoi sert l'utilisation de IFNULL avant le group_concat? Vous avez également des guillemets simples. Juste curieux car c'est nouveau et je veux apprendre de mes erreurs. – Noob

+0

S'il n'y a pas de lignes correspondantes dans la table 'b',' GROUP_CONCAT() 'retournera' NULL'. Cela convertit cette valeur nulle en une chaîne vide. – Barmar

+0

Oups, j'ai récupéré les tables à l'envers. – Barmar