2010-09-01 2 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 

Если идентификатор категории для продукта 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

Черт, я как раз собирался опубликовать то же самое! lol, +1 anyway – Codesleuth

+0

Спасибо за ответ, если tblProducts.categoryID = 0, хотя он еще не возвращает эту запись. Я думаю, мне нужно использовать другой тип соединения? –

+0

Мой ответ использует другой тип JOIN для вашего вопроса. Вы говорите, что левое соединение не работает? Если у вас есть предложение WHERE, которое вы не показали нам, которое преобразует его во внутреннее соединение? –

Смежные вопросы