2013-02-03 98 views
-1

我需要幫助我的查詢:需要幫助我的查詢

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分的結果,但它必須給我個結果,因爲有其categoryID='2'

而且我已經檢查了4個數據從該查詢並有4個數據,其categoryID='2'

select * from Products; 

回答

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' 

A LEFT JOIN將返回全部Products即使ProductPhoto表中沒有匹配的行。 INNER JOIN將只返回兩個表中匹配的行。

如果您需要幫助學習JOIN語法那麼這裏是一個偉大的visual explanation of Joins

+0

感謝übluefeet它的工作 –

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記錄匹配的產品。

0

請注意,您正在產品ID上的ProductPhoto上進行INNER JOIN,該產品ID等於產品中的ID。

如果在兩個表中只有2個匹配的行的categoryID爲2,那麼這就是所有您將看到的返回。

將您的查詢更改爲LEFT JOIN並查看您的4行是否返回。如果他們是,那麼你的上面的查詢是正確的。