当连接没有记录时,SQL显示记录

时间:2010-09-15 11:22:59

标签: sql join

SELECT     tblProducts.productName, 
           tblProducts.basePrice, 
           tblProductOptions.optionDescription
FROM       tblProducts CROSS JOIN tblProductOptions
WHERE      (tblProducts.ID = 3) AND (tblProductOptions.ID = 5)

如果(tblProductOptions.ID = 5)然后它有效,则有一个ID = 5的选项。如果它是(tblProductOptions.ID = 99999)则它不返回任何内容,因为ID = 99999没有选项。

我想修改声明,以便在传递无效选项ID时仍然返回产品记录!这可能吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

CROSS JOIN是一种笛卡尔产品..可能不是你想要的。 我建议改为INNER JOIN

答案 1 :(得分:1)

CROSS JOIN更改为LEFT JOIN,并且(因为它们将结果限制为非空值)将您的WHERE更改为

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