2011-08-26 7 views
0

J'ai cherché google pendant 2 heures et pas de chance sur ce que je pense est simple. J'ai 4 tables que je peux réunir ensemble les 4 premières ci-dessous et j'ai toutes les rangées de toutes les tables. J'essaye de comprendre comment je peux ajouter 1 colonne supplémentaire de FullName de sorte que tous les résultats montrent le FullName de table5 dans chaque rangée basée sur b qui est dans toutes les autres tables. J'espère que cela a du sens pour quelqu'un.Mysql requête sur 5 tables

SELECT a, b, NULL AS Name FROM table1 
union SELECT a, b, NULL AS Name FROM table2 
union SELECT a, b, NULL AS Name FROM table3 
union SELECT a, b, NULL AS Name FROM table4 
union SELECT NULL AS a, b, FullName FROM table5 where 

..... b est égal à tout b dans les 4 précédentes instructions select

Répondre

1
SELECT unions.*, tb5.FullName 
FROM (
SELECT a, b FROM table1 
union SELECT a, b FROM table2 
union SELECT a, b FROM table3 
union SELECT a, b FROM table4 
union SELECT a, b FROM table5 
) AS unions 
JOIN table5 AS tb5 ON unions.b = tb5.b 

pourrait fonctionner?

EDIT: Mise à jour ...

+0

Merci, cela fonctionne mais renvoie des lignes supplémentaires. Pas certain de pourquoi. Je pense que c'est peut-être parce qu'il y a quelques doublons dans la table 5 pour la valeur b dont je n'ai aucun contrôle car ce ne sont pas mes données. J'ai essayé d'ajouter un groupe par unions.b à la fin de la requête, mais il retourne trop peu de lignes. Toutes les idées ... – user913343

+0

vous pouvez essayer "distinct", mais idéalement, si possible, vous devriez changer la structure de votre table, il semble que c'est vraiment foiré. – Matthew

+0

Ouais j'ai essayé et c'est foiré, mais je suis victime d'une mauvaise planification des autres. Merci pour l'aide. – user913343