0

重複の可能性:
MySQL#1054不明な列

ユーザーが提供した検索クエリに一致するレコードのみをプルするクエリが必要です。トリッキーな部分は、ユーザーが検索している情報が別のテーブルにあることです。私のアプリケーションは、「コンピューター」と呼ばれるテーブルからレコードをプルしています。'computers'内には、プリンターの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

私は立ち往生しています、助けて!

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 に答える