2016-07-07 9 views
1

私は以下のmysqlクエリを持っています。mysqlで「ユニークでないテーブル/エイリアス」エラーの原因は何ですか?

UPDATE data_records 
    INNER JOIN doors 
    ON (sensors.gateway_id = doors.id) 
    INNER JOIN data_records 
    ON (data_records.sensor_id = sensors.id) 
SET data_records.value=1 
WHERE doors.addr='FFA' 

私はエラーLookup Error - MySQL Database Error: Not unique table/alias: 'data_records'の原因損失でいます。私は明らかに私のデータベースにdata_recordsテーブルを持っています。

答えて

2

あなたは、センサが、2つのタイムdata_recods

UPDATE data_records 
INNER JOIN doors ON (sensors.gateway_id = doors.id) 
INNER JOIN sensors ON (data_records.sensor_id = sensors.id) 
SET data_records.value=1 
WHERE doors.addr='FFA' 
4

data_recordsに2つの結合があります。私はあなたが意図し考える:

UPDATE data_records dr INNER JOIN 
     sensors s 
     ON dr.sensor_id = s.id INNER JOIN 
     doors d 
     ON s.gateway_id = d.id 
    SET dr.value = 1 
WHERE d.addr = 'FFA'; 

あなたのクエリがsensorsを参照するが、UPDATE句でそれを定義していません。

また、テーブルのエイリアスを追加して、クエリの書き込みと読み込みが簡単になるようにしました。

0

次のいずれかやった間違いに参加し、代わりにsensorsテーブルの二回data_recordsを使用、またはあなただけの二data_recordssensorsとしての別名を意味するものではありません。いずれにせよ、これは間違っています。

最初のオプション:

UPDATE data_records 
    INNER JOIN doors 
    ON (sensors.gateway_id = doors.id) 
    INNER JOIN sensors 
    ON (data_records.sensor_id = sensors.id) 
SET data_records.value=1 
WHERE doors.addr='FFA' 

第二1:

UPDATE data_records 
    INNER JOIN doors 
    ON (sensors.gateway_id = doors.id) 
    INNER JOIN data_records sensors 
    ON (data_records.sensor_id = sensors.id) 
SET data_records.value=1 
WHERE doors.addr='FFA' 
関連する問題