2010-09-15 3 views
0
SELECT  tblProducts.productName, 
      tblProducts.basePrice, 
      tblProductOptions.optionDescription 
FROM  tblProducts CROSS JOIN tblProductOptions 
WHERE  (tblProducts.ID = 3) AND (tblProductOptions.ID = 5) 

Si (tblProductOptions.ID = 5) il fonctionne, il y a une option avec ID = 5. S'il est (tblProductOptions.ID = 99999) alors il retourne rien, car il n'y a pas d'option avec ID = 99999SQL show enregistrement lorsque se joindre a aucun enregistrement

Je voudrais modifier l'instruction afin qu'elle renvoie toujours l'enregistrement du produit si un ID d'option invalide lui est passé! Est-ce possible?

Merci!

Répondre

1

changement CROSS JOIN-LEFT JOIN, et (parce que la limite WHERE les résultats à la non nulls) changer WHERE être

WHERE (tblProducts.ID = 3) 
AND (tblProductOptions.ID = 5 OR tblProductOptions.ID IS NULL) 
+0

Syntaxe incorrecte près d'où –

+0

** SELECT tblProducts.productName, tblProducts.basePrice, tblProductOptions.optionDescription DE tblProducts LEFT OUTER JOIN tblProductOptions SUR tblProductOptions.ID = 9 OU (tblProducts.ID = 3) ** fonctionne super merci :) –

3

A CROSS JOIN est un produit cartésien .. probablement pas ce que vous recherchez. Je suggère INNER JOIN à la place

Questions connexes