2010-08-18 122 views
0

我需要從數據庫列表中檢索製造商(表producenci),但僅限於特定產品類別。實際查詢看起來像這樣,但它返回0個記錄。如果我刪除WHERE,它將返回整個表的生成器。特殊SQL查詢構建

SELECT DISTINCT (
pr.id 
), pr.nazwa 
FROM producenci pr 
LEFT JOIN produkty ON pr.id = produkty.producenci_id 
LEFT JOIN przyporzadkowania prz ON produkty.id = prz.produkty_id 
LEFT JOIN kategorie k ON k.id = prz.kategorie_id 
WHERE prz.produkty_id = pr.id 
AND prz.kategorie_id = '16' 
ORDER BY pr.nazwa 

重要的表字段:

producenci - ID INT,名稱VARCHAR

przyporzadkowania - ID INT,kategorie_id INT,subkategorie_id INT,sub_subkategorie_id INT,produkty_id INT

kategorie - ID INT ,nazwa VARCHAR

產品 - id INT,nazwa VARCHAR

任何想法?謝謝

回答

1

嘗試從where子句中刪除prz.produkty_id = pr.id,因爲這看起來像您試圖使製造商ID等於產品ID。

2
SELECT pr.id, pr.nazwa 
FROM producenci pr 
WHERE pr.id IN 
     (
     SELECT produkty.producenci_id 
     FROM produkty 
     JOIN przyporzadkowania prz 
     ON  prz.produkty_id = produkty.id 
     WHERE prz.kategorie_id = '16' 
     ) 
ORDER BY 
     pr.nazwa 

請確保您有以下指標:

produkty (producenci_id) 
przyporzadkowania (kategorie_id, produkty_id) 
0
  1. WHERE刪除prz.produkty_id = pr.id
  2. 所有表格應使用INNER JOIN而不是LEFT JOIN