2012-02-03 4 views
0

次のクエリでは私は#1054 - Unknown column 'zzAir_Reservations_201201.id' in 'where clause'を取得します。何故ですか?同じクエリのmysqlテーブルエイリアスとテーブルの実名

これは単純なクエリです。元のクエリははるかに複雑です。私があれば、それはエイリアスを作るのは意味がありません知っている

これは、過去のある時点で働いていたが、私は最後の数週間でMySQLサーバを更新してきた私は、これは新しい「機能」

だと思いますその使用されていませんが、私はエイリアスなので、元のテーブルの使用を制限することは実際には意味がありません。マニュアルでリファレンスを見つけることができませんでした

+0

理由だけでない "' id' = '0'" の

?たぶんあなたの質問を少し単純化する必要があります。情報が不十分です。 –

+1

元の質問は複数のテーブルを使用しているため、すべてに 'id'があります。 mysqlでこれを試してみると、エラーが発生します – Quamis

+0

はい、エラーが発生しました。私は5.1.41をチェックし、5.5.20を実行している別のサーバーでもチェックしました。両方ともエラーがあります。私はあなたのクエリやダウングレードを変更する必要がありますね。 –

答えて

1

テーブル用にaliasを作成しました。このテーブルの元の名前を使用すると、エラー(Error Code: 1054)が生成されました。代わりに

SELECT `id` 
FROM 
    `reservations` AS `res` 
WHERE 
    `reservations`.`id`='0' 

使用

SELECT `id` 
FROM 
    `reservations` AS `res` 
WHERE 
    res.`id`='0' 
-1

私は多くの場合、テーブル名が何であるかわからないPHPからのほとんどのクエリを書きます。

私はいつもそれらにt1、t2などのエイリアスを付けます。次にWHERE句は常にt1.'a '、t2.'a'などを使用し、すべてが機能します。

$query = "SELECT `$source_table`.`$category_field`, `$support_table`.`$subcategory_field` WHERE `$t1`.`$id_field` = `$t2`.`$id.field`; 

などです。

あなたはあなたの手に大きな混乱を招くかもしれないと思われるので、あまりにも多くのクエリをお持ちではないことを願っています。

+0

私はそれらにもエイリアスですが、これは古いコードベースです。問題は、私はこの時点でそれらを検出する方法がないということです。問題はなぜそれが問題なのか、あるいはその機能(バージョン固有のものかもしれないが、テストする別のSQLサーバーがないため) – Quamis

関連する問題