mySQL查询 - #1054 - 未知第3列

时间:2012-11-20 16:53:08

标签: mysql sql

  

可能重复:
  MySQL #1054 unknown column

我需要一个只会提取与用户提供的搜索查询匹配的记录的查询。棘手的部分是用户正在搜索的信息在另一个表中。我的应用程序是从名为“计算机”的表中提取记录。在“计算机”内部,有一列具有打印机的ID号(default_printer)。所有打印机信息(例如名称(用户正在搜索)都位于用户正在搜索的“打印机”表中。

当然,我需要列出所有计算机信息,但同时将'computers'表中的ID解析为'printers'表中的名称。这是我到目前为止提出的查询:

     SELECT c.id, c.name, p.name default_printer, c.description
       FROM computers c, groups g
 INNER JOIN printers p
         ON g.default_printer = p.id OR c.default_printer = p.id
      WHERE p.name LIKE 'mfd%'

问题是我收到错误:#1054 - 'on子句'中的未知列'c.default_printer'。 'computers'表有一个名为'default_printer'的列。

这是我的表架构:

Table name: computers
Columns: id, name, description, default_printer, report_date, guid

Table name: printers
Columns: id, name, path, location, description

Table name: groups
Columns: id, name, description, default_printer

我被困住了,帮帮忙!

2 个答案:

答案 0 :(得分:2)

不要为连接和显式连接表示法混合使用逗号表示法,您将无法访问某些别名。如果您无权访问别名,则无法引用其列。我假设群组有一列id

此外,正如其他地方所述,我建议您在对此标签'default_printer'使用不同的名称时,为清楚起见进行排查。

SELECT c.id, c.name, p.name the_default_printer, c.description
   FROM computers c
   INNER JOIN groups g  ON g.id = c.guid
   INNER JOIN printers p
     ON g.default_printer = p.id OR c.default_printer = p.id
  WHERE p.name LIKE 'mfd%'

答案 1 :(得分:1)

p.name和default_printer

之间缺少逗号