Mis*_*iur 1 mysql sql join mysql-error-1054
SELECT p.id
FROM produkty p, przyporzadkowania pr, stany_magazynowe, gk_grupy_produkty
INNER JOIN sub_subkategorie ssi
ON pr.sub_subkategorie_id = ssi.ID
Run Code Online (Sandbox Code Playgroud)
表及其重要字段
produkty - id, pozycja
przyporzadkowania - id, produkt_id, sub_kategoria_id, sub_subkategoria_id
sub_subkategorie - id, subkategorie_id, pozycja
subkategorie - id, kategorie_id, pozycja
kategorie - id, pozycja
Run Code Online (Sandbox Code Playgroud)
错误"#1054 - 'on子句'中的未知列'pr.sub_subkategorie_id'"
试过
SELECT p.id, pr.sub_subkategorie_id
Run Code Online (Sandbox Code Playgroud)
结果相同.
完整查询(未通过上述查询失败进行测试):
SELECT p.id
FROM produkty p, przyporzadkowania pr, stany_magazynowe, gk_grupy_produkty
INNER JOIN sub_subkategorie ssi ON pr.sub_subkategorie_id = ssi.ID
INNER JOIN subkategorie si ON ssi.subkategorie_id = si.id
INNER JOIN kategorie c ON si.kategorie_id = c.id
WHERE stany_magazynowe.produkty_id = p.id
AND p.id = pr.produkty_id
AND pr.sub_subkategorie_id =1
AND p.widoczny = '1'
AND p.id = gk_grupy_produkty.id_produktu
AND gk_grupy_produkty.id_grupy =1
AND gk_grupy_produkty.towar_widocznosc =1
AND c.id = '1'
ORDER BY c.pozycja, si.pozycja, ssi.pozycja, p.pozycja
Run Code Online (Sandbox Code Playgroud)
希望我提供足够的信息(之前的问题 - SELECT*FROM表WHERE字段IN(SELECT id FROM table ORDER BY field2))
编辑:
是的,有拼写错误,但只有在这里,在stackoverflow(太多的咖啡,我的手指飞行).谢谢大家,你救了我的一天!
您以错误的顺序加入表:
SELECT p.id
FROM produkty p, stany_magazynowe, gk_grupy_produkty, przyporzadkowania pr
INNER JOIN sub_subkategorie ssi
ON pr.sub_subkategorie_id = ssi.ID
Run Code Online (Sandbox Code Playgroud)
该错误是由于JOIN关键字与逗号相比具有更高的优先级.像这样的错误是我敦促你不要使用隐式连接语法和逗号的原因之一,而是总是使用JOIN关键字显式地编写连接.
这是使用显式连接重写的完整查询:
SELECT p.id
FROM produkty p
INNER JOIN przyporzadkowania pr ON p.id = pr.produkty_id
INNER JOIN stany_magazynowe ON stany_magazynowe.produkty_id = p.id
INNER JOIN gk_grupy_produkty ON p.id = gk_grupy_produkty.id_produktu
INNER JOIN sub_subkategorie ssi ON pr.sub_subkategorie_id = ssi.ID
INNER JOIN subkategorie si ON ssi.subkategorie_id = si.id
INNER JOIN kategorie c ON si.kategorie_id = c.id
WHERE pr.sub_subkategorie_id = 1
AND p.widoczny = '1'
AND gk_grupy_produkty.id_grupy =1
AND gk_grupy_produkty.towar_widocznosc =1
AND c.id = '1'
ORDER BY c.pozycja, si.pozycja, ssi.pozycja, p.pozycja
Run Code Online (Sandbox Code Playgroud)
相关问题