特殊SQL查询生成
我需要从制造商的数据库列表(表producenci)中检索,但只能从特定的产品类别中检索。实际查询如下所示,但它返回0条记录。如果我删除WHERE,它将返回整个表producenci特殊SQL查询生成,sql,Sql,我需要从制造商的数据库列表(表producenci)中检索,但只能从特定的产品类别中检索。实际查询如下所示,但它返回0条记录。如果我删除WHERE,它将返回整个表producenci 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 = p
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
produkty-id INT,nazwa VARCHAR
有什么想法吗?谢谢尝试从where子句中删除
prz.produkty_id=pr.id
,因为这看起来像是在试图使制造商id等于产品id。尝试从where子句中删除prz.produkty_id=pr.id
,因为这看起来像是在试图使制造商id等于产品id
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)
确保您具有以下索引:
produkty (producenci_id)
przyporzadkowania (kategorie_id, produkty_id)
WHERE
中的prz.produkty\u id=pr.id
内部联接
而不是左联接
WHERE
中的prz.produkty\u id=pr.id
内部联接
而不是左联接