0

可能重复:
MySQL #1054 未知列

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

所以自然我需要列出所有计算机信息,但同时将“计算机”表中的 ID 解析为“打印机”表中的名称。这是我到目前为止提出的查询:

     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

我卡住了,求救!

4

2 回答 2

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%'
于 2012-11-20T16:55:12.650 回答
1

您在 p.name 和 default_printer 之间缺少逗号

于 2012-11-20T16:55:00.437 回答