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
表及其重要字段
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
错误“#1054 - 'on子句'中的未知列'pr.sub_subkategorie_id'”
尝试
SELECT p.id, pr.sub_subkategorie_id
同样的结果。
完整查询(由于上述查询失败而未进行测试):
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
希望我提供足够的信息(早期问题 - SELECT * FROM table WHERE field IN (SELECT id FROM table ORDER BY field2))
编辑:
是的,有拼写错误,但只有在这里,在stackoverflow(太多的咖啡,我的手指飞行)。谢谢大家,你救了我的一天!
答案 0 :(得分:6)
您以错误的顺序加入表格:
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
错误是由于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
相关问题
答案 1 :(得分:1)
您正在将“经典”联接与join
关键字混合使用。您应该对所有联接使用join
关键字。
错误来自您加入gk_grupy_produkty
表,该表不存在该字段。数据库确实将您的查询视为:
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)
您应该使用:
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
答案 2 :(得分:0)
从这开始:(填写 ??? )
SELECT p.id
FROM produkty p
JOIN przyporzadkowania pr ON p.??? = pr.???
JOIN sub_subkategorie ssi ON pr.sub_subkategorie_id = ssi.ID
(您无需指定INNER)
你的原始FROM条款:
FROM produkty p, przyporzadkowania pr, stany_magazynowe, gk_grupy_produkty
表p和pr是否没有指定JOIN条件,这将导致笛卡尔积或交叉连接(在这种情况下可能不是一件好事)以及未在查询中的任何其他位置引用的表:
stany_magazynowe,gk_grupy_produkty
为
指定加入produkty p AND przyporzadkowania pr
并删除
stany_magazynowe,gk_grupy_produkty
提示:如果您没有引用SELECT,ORDER BY,GROUP BY,WHERE中的表中的任何列,那么该表可能不属于您的FROM子句。 (除非它是一个连接/联结表。)
答案 3 :(得分:0)
名为sub_subkategoria_id
的列是否为拼写错误?