我的查询需要帮助:
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;
答案 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
也会返回所有ProductPhoto
。 INNER 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行。如果是,那么您的上述查询是正确的。