8
votes

MySQL: Fusionner trois tables ensemble

Je veux fusionner trois tables ensemble comme indiqué ici:

fusionne trois tables T1, T2 et T3 ensemble

En gros, je veux inclure les éléments des trois tableaux T1, T2 et T3 et les avoir fusionnés comme indiqué dans la table des résultats. J'ai essayé quelque chose comme ceci: xxx

mais il ne semble pas avoir travaillé. Il montre les résultats mais seulement des valeurs uniques. Dans le résultat si utilisateur est johny , il ne montrera que la première valeur et ignorera la seconde, bien qu'elle soit dans la table des résultats.

Y a-t-il quelque chose qui me manque?


2 commentaires

Changement de votre étiquette sur Joindre car fusion-table n'est pas clair.


@Michael vous aviez raison. Merci, ça va. Savez-vous comment puis-je trier les utilisateurs? Je suppose que je dois utiliser la commande par ici.


3 Réponses :


4
votes

Éliminer le groupe par code>. Il n'y a pas besoin de cela dans cette requête.

SELECT T1.user, T2.tid, T2.name, T3.type, T1.mid
FROM T1
LEFT JOIN T2 ON T1.mid = T2.mid
LEFT JOIN T3 ON T2.tid = T3.tid;


1 commentaires

Merci oui, c'était exactement le problème, son travail maintenant.



6
votes

Le groupe n'est pas nécessaire si vous souhaitez voir tous les résultats pour chacun des utilisateurs. Sinon, il va cacher certaines des lignes et montrera une seule par utilisateur.

JOINT JOINT T1 DROIT À T2 QUE LE NOUVEAU DE JOINTE À T3. C'est une bonne pratique s'il y a un élément de T1 qui n'a aucune connexion avec l'élément de T3 pour éviter de montrer le résultat null pour les champs TÂ £. P>

SELECT T1.user, T2.tid, T2.name, T3.type, T1.mid
FROM T1
RIGHT JOIN T2 ON T1.mid = T2.mid
LEFT JOIN T3 ON T2.tid = T3.tid;


1 commentaires

Oui droite rejoindre est meilleur. Depuis que j'ai eu ce problème et que j'utilisais où avec t2.tid! = 'Null' en plus de la requête ci-dessus. Merci encore.



5
votes

se débarrasser du "groupe par" partie. Cela devrait résoudre votre problème.


1 commentaires

Merci beaucoup, c'était le problème. Sa fonctionne bien maintenant