代码之家  ›  专栏  ›  技术社区  ›  Tom Gullen

联接没有记录时SQL显示记录

  •  0
  • Tom Gullen  · 技术社区  · 14 年前
    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 回复  |  直到 14 年前
        1
  •  1
  •   cjk    14 年前

    变化 CROSS JOIN LEFT JOIN ,并且(因为Where将结果限制为非空值)更改您的位置

    WHERE (tblProducts.ID = 3) 
    AND   (tblProductOptions.ID = 5 OR tblProductOptions.ID IS NULL) 
    
        2
  •  3
  •   guigui42    14 年前

    交叉联接是笛卡尔积。可能不是你要找的。 我建议改为内部连接