SQL查询未知列

use*_*353 0 sql

这是我的SQL查询:

SELECT DISTINCT 
   k.*, m.title as city, w.title as state 
FROM 
   konta__kategoria kat, konta k 
INNER JOIN 
   miejscowosci as m ON k.miejscowosc = m.id 
INNER JOIN 
   wojewodztwa as w ON k.wojewodztwo = w.id 
LEFT JOIN 
   kategorie as cat ON cat.id = kat.kategoria 
WHERE 
   kat.kategoria IN (1610,1609,1608,1607,1606,1605,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,6) 
   AND kat.parent_id = k.id 
   AND k.dsc LIKE "%%" 
   AND deleted = 0 
ORDER BY 
   k.nazwa
Run Code Online (Sandbox Code Playgroud)

我收到错误:

#1054 - Unknown column 'kat.kategoria' in 'on clause'
Run Code Online (Sandbox Code Playgroud)

我删除时它正在工作

LEFT JOIN kategorie as cat ON cat.id = kat.kategoria
Run Code Online (Sandbox Code Playgroud)

但我知道kat.kategoria存在(它在哪里工作),也存在表cat.id,那么问题是什么?

Zan*_*ane 5

所以这就是JOIN用ANSI 92提出的当前语法编写查询的方式.这里是一篇精彩文章的链接,为什么你不应该使用旧方法来做到这一点.

 SELECT DISTINCT 
           k.*, m.title as city, w.title as state 
        FROM 
           konta__kategoria kat
        INNER JOIN konta k 
            ON kat.parent_id = k.id 
        INNER JOIN miejscowosci as m 
            ON k.miejscowosc = m.id 
        INNER JOIN  wojewodztwa as w 
            ON k.wojewodztwo = w.id 
        LEFT JOIN  kategorie as cat 
            ON cat.id = kat.kategoria 
        WHERE 
           kat.kategoria IN (1610,1609,1608,1607,1606,1605,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,6) 
           AND k.dsc LIKE "%%" 
           AND deleted = 0 
        ORDER BY 
           k.nazwa
Run Code Online (Sandbox Code Playgroud)