2010-01-08 9 views
0
SELECT 
    description 
FROM 
    diagnosis_mapping 
LEFT JOIN 
    diagnosis_codes 
ON 
    diagnosis_codes.codeid = diagnosis_mapping.codeid 

SELECT 
    description 
FROM 
    diagnosis_mapping 
LEFT JOIN 
    diagnosis_codes 
ON 
    diagnosis_codes.codeid = diagnosis_mapping.secondarycodeid 

Comment fusionner ces 2 requêtes et obtenir des informations dans un seul jeu de résultats? En premier j'ai besoin de faire correspondre avec codeid et dans la seconde je dois correspondre avec secondarycodeid à la même table maître pour aller chercher la description des deux.Requête de jointure Mysql

Répondre

5

Vous pouvez faire deux jointures dans une requête, il suffit de donner un alias aux noms de table si MySQL sait ce que vous voulez obtenir:

SELECT 
    a.description desc_a, 
    b.description desc_b 
FROM 
    diagnosis_mapping 
LEFT JOIN 
    diagnosis_codes a 
ON 
    a.codeid = diagnosis_mapping.codeid 
LEFT JOIN 
    diagnosis_codes b 
ON 
    b.codeid = diagnosis_mapping.secondarycodeid 

Dans cet exemple, a est un alias pour la première table et b à l'autre. Lorsque vous attribuez des noms d'alias aux tables, MySQL (et toute autre base de données SQL) les traite essentiellement comme deux tables distinctes et récupère des données indépendamment.

+2

également mieux donner un alias dans les champs de résultats ('a.description desc_a, b.description desc_b') car la plupart des frameworks retournant un tableau associatif (mysql_fetch_assoc' de PHP) ignorent le composant de nom de table et ne vous renverraient qu'un seul champ' description'. – Wim

+0

@Wim, vous avez absolument raison, mon exemple ne serait pas très utilisable sans eux. J'ai édité ma réponse. –

+0

Son fonctionnement. Merci. Même l'idée de donner un alias aux champs de résultats est cool. C'est bien. Merci pour votre aide à me faire faire. – ASD

0
SELECT description FROM (diagnosis_mapping LEFT JOIN diagnosis_codes ON (diagnosis_codes.codeid = diagnosis_mapping.codeid)) LEFT JOIN diagnosis_mapping ON (diagnosis_codes.codeid = diagnosis_mapping.secondarycodeid) 

Je ne sais pas si c'est ce dont vous avez besoin, mais essayez;] (pourrait avoir besoin de vérification d'orthographe et en ajoutant quelques « AS » s'il y a des erreurs SQL)