2010-03-24 7 views
0

J'ai 2 tables.Requête dans plusieurs tables avec MYSQL

La table_1 a 3 lignes de produit: ID, quantité et prix. La table_2 comporte 2 lignes: ID, Special_note.

Tous les produits ne comportent pas de note spéciale. Quand un produit n'a pas de note spéciale, il n'y a pas de ligne pour ce produit dans la table 2.

J'essaie d'utiliser une requête select qui va obtenir toutes les informations de table_1 mais aussi récupérer la note spéciale de table_2 quand il y en a un.

Le problème que j'ai en ce moment est que s'il n'y a pas de note spéciale, il ne saisira pas du tout les informations dans la table_1.

Je comprends pourquoi il le fait mais je ne sais pas comment résoudre la requête afin qu'elle renvoie tous les produits, qu'il y ait ou non une note spéciale.

SELECT TABLE_1.ID, QUANTITY, PRICE, SPECIAL_NOTE 
FROM TABLE_1, TABLE_2 
WHERE TABLE_1.ID = TABLE_2.ID 

J'ai simplifié un peu la requête dans le cadre de cet exemple.

Merci pour votre aide!

Répondre

2

Utilisez un LEFT OUTER JOIN:

SELECT t1.ID, t1.QUANTITY, t1.PRICE, t2.SPECIAL_NOTE 
FROM TABLE_1 t1 
LEFT OUTER JOIN TABLE_2 t2 ON t1.ID = t2.ID 

Mise à jour:

Pour ajouter une clause, par exemple WHERE, où la quantité> = 1, procédez comme suit:

SELECT t1.ID, t1.QUANTITY, t1.PRICE, t2.SPECIAL_NOTE 
FROM TABLE_1 t1 
LEFT OUTER JOIN TABLE_2 t2 ON t1.ID = t2.ID 
WHERE t1.QUANTITY >= 1 
+0

Merci beaucoup . Essayer de saisir ce nouveau concept. Disons que je voulais seulement saisir les lignes où la quantité est au moins 1. Où devrais-je ajouter la requête where? Après la ligne LEFT OUTER JOIN? – Enkay

+0

Voir ma modification ci-dessus. – RedFilter

+0

Je l'ai compris dans un exemple simple! Essayer de le faire fonctionner avec ma requête réelle très longue et compliquée. Merci beaucoup! – Enkay