2010-09-01 65 views
1

給查詢:SQL更改查詢,以顯示孤兒

SELECT 
    tblProducts.ID, tblProducts.views, tblProducts.productName, tblProducts.isForSale, tblProducts.isLimitedStock, tblProducts.stockCount, tblProducts.description, tblProducts.weightKG, tblProducts.basePrice, tblProducts.dateCreated, tblProductCats.catName, 
    (SELECT COUNT(*) FROM tblProductPrices WHERE productId = tblproducts.id) AS priceMods, 
    (SELECT COUNT(*) FROM tblcomments WHERE productId = tblproducts.ID) AS comments, 
    (SELECT COUNT(*) FROM tblProductImages WHERE productID = tblproducts.id) AS imageCount 
FROM 
    tblProducts 
INNER JOIN 
    tblProductCats ON tblProducts.categoryID = tblProductCats.ID 

如果該產品的類別ID爲0 (tblProducts INNER JOIN tblProductCats ON tblProducts.categoryID = tblProductCats.ID)它不會返回的產品記錄,反正是有修改查詢,以便它不返回記錄用0作爲值並將類別名稱顯示爲'孤兒'?

回答

5
SELECT ... 
     ISNULL(tblProductCats.catName,'Orphan') AS catName , 
/* 
Or possibly... 
     CASE 
       WHEN tblProducts.categoryID = 0 
       THEN 'Orphan' 
       ELSE tblProductCats.catName 
     END AS catName 
     */ 
     ... 
FROM tblProducts 
     LEFT OUTER JOIN tblProductCats 
     ON  tblProducts.categoryID = tblProductCats.ID 
+0

Damnit,我正要發佈相同的東西!大聲笑,+1無論如何 – Codesleuth 2010-09-01 09:59:02

+0

感謝您的答案,如果tblProducts.categoryID = 0雖然然後它不會仍然返回該記錄。我想我需要使用不同類型的連接? – 2010-09-01 09:59:45

+0

我的答案對你的問題使用了不同類型的JOIN。你說左連接不起作用嗎?如果是這樣,你有一個WHERE子句,你沒有向我們展示將它轉換爲內部聯接? – 2010-09-01 10:03:27