需要帮助我的查询

时间:2013-02-03 23:18:41

标签: mysql sql

我的查询需要帮助:

SELECT 
P.ID,
P.CategoryID,
P.Name,
P.SupplierID,
p.UnitPrice,
p.UnitsInStock,
pp.PicturePath
FROM Products P JOIN ProductPhoto PP ON p.ID=PP.ProductID   WHERE P.CategoryID='2';

这个查询给了我2个结果,但它必须给我4个结果,因为有4个数据categoryID='2'

此外,我已从此查询中进行了检查,并且有4个数据categoryID='2'

 select * from Products;

3 个答案:

答案 0 :(得分:2)

您需要LEFT JOIN

SELECT  P.ID,
  P.CategoryID,
  P.Name,
  P.SupplierID,
  p.UnitPrice,
  p.UnitsInStock,
  pp.PicturePath
FROM Products P 
LEFT JOIN ProductPhoto PP 
  ON p.ID=PP.ProductID  
WHERE P.CategoryID='2'

即使LEFT JOIN表中没有匹配的行,Products也会返回所有ProductPhotoINNER JOIN只返回两个表中匹配的行。

如果您需要帮助学习JOIN语法,那么这里有一个很棒的visual explanation of Joins

答案 1 :(得分:0)

SELECT 
P.ID,
P.CategoryID,
P.Name,
P.SupplierID,
p.UnitPrice,
p.UnitsInStock,
pp.PicturePath
FROM Products P LEFT JOIN ProductPhoto PP ON p.ID=PP.ProductID   WHERE P.CategoryID='2'

尝试使用左连接,可能没有与产品匹配的productionPhoto记录。

答案 2 :(得分:0)

请注意,您在ProductID上对ProductPhoto进行INNER JOIN,等于产品中的ID。

如果两个表中只有2个匹配行且categoryID为2,那么您将看到所有这些行返回。

将您的查询更改为LEFT JOIN并查看是否返回了4行。如果是,那么您的上述查询是正确的。