2010-09-07 8 views
2

Cher all.i newbie à la programmation web et jusqu'à présent, j'ai encore apprendre la syntaxe MySQL. pour l'instant je commence à utiliser la méthode LEFT JOIN. Je sais que cette méthode utilise pour faire la normalisation entre deux ou plusieurs tables. J'ai posté une question à SO, puis je reçois un Answer qui me fait confondre. J'ai modifié cette réponse, mais je confonds encore parce qu'il utilise LEFT JOIN juste pour une table. si le LEFT JOIN peut être utilisé dans une table?Apprendre LEFT JOIN dans MySQL

Répondre

4

Vous pouvez LEFT JOIN une table avec lui-même, tout comme vous pouvez JOIN une table avec lui-même. Votre but sera généralement différent, car la caractéristique spécifique d'un LEFT JOIN est d'assurer une ligne dans la sortie lorsqu'aucune ligne correspondante n'existe sur la droite, bien sûr; vous pouvez sélectionner les lignes qui ont été sélectionnées de cette façon en recherchant NULL pour l'autre partie de la ligne, la partie qui proviendrait normalement de la table de droite.

Considérons par exemple une table Product avec des colonnes ID, clé primaire, Name, Category et Cost; vous voulez des informations sur les produits les moins chers de leur catégorie. Alors ...:

SELECT P1.Name, P1.Category, P1.Cost 
    FROM Product AS P1 
    LEFT JOIN Product AS P2 
    ON (P1.Category = P2.Category and P1.Cost > P2.Cost) 
    WHERE P2.ID IS NULL 

est un exemple de « rejoindre gauche d'une table pour lui-même », qui répondra à la spécification « vous voulez » (si plus d'un élément a le même le plus bas coût dans une catégorie vous obtiendrez tous les - la requête vous donne réellement les articles tels qu'aucun article dans leur catégorie est moins cher et n'a pas de chèques pour les articles de égal coût ;-).