2017-09-04 1 views
0

私はそれを正しく引き出すためにクエリに追加の変数を追加する場所を見つけようとしていましたが、いくつか問題があります。ここに私の現在のクエリは次のとおりです。私はクエリ内の別のテーブルから列の値を追加しようとしています

SELECT 
tt.unit_id, 
tt.latitude, 
tt.longitude, 
tt.gps_settings, 
tt.timestamp 
FROM AA55 tt 
LEFT JOIN device_link AS dl ON dl.device_id = unit_id 
INNER JOIN (SELECT unit_id, MAX(timestamp) AS MaxTimestamp FROM AA55 GROUP 
BY unit_id) AS groupedtt 
ON tt.unit_id = groupedtt.unit_id 
AND tt.timestamp = groupedtt. MaxTimestamp 
WHERE dl.user_id = '$real_id'; 

基本的に、私はdevice_infoというテーブルからnicknameという列を追加する必要があります。私は右のtt.unit_id後に値を追加しようとしましたが、私はニックネームがAA55.unit_iddevice_info.device_idとを比較することによって引き出される必要がある

Unknown column 'unit_id' in 'on clause' 

を言ってエラーを取得しておきます。

これを行う方法はありますか?前もって感謝します。

+0

試して(テーブルTTは、お使いのベーステーブルですので、私は順序を変更)。エイリアスを使用するには、エイリアスでそのテーブルを参照する必要があります。 – iLikeMySql

+0

私は、それがどんな利益をもたらすのか混乱しています。私はそれがそのままクエリを実行すると、それは完全に動作します。たとえば、「SELECT tt.unit_id、aa.nickname ... FROM AA55 tt、device_info aa」と表示するように変更すると、エラーが発生したときに表示されます。 –

+0

あなたのコメントが間違っています。あなたがtt.unit_id = device_info.device_idのdevice_infoでAA55に参加した場合、それは動作します – iLikeMySql

答えて

0

これは動作するはずです: "tt.unit_id = dl.device_id" に "dl.device_id = UNIT_ID" を変更

SELECT 
tt.unit_id, 
d2.nickname, 
tt.latitude, 
tt.longitude, 
tt.gps_settings, 
tt.timestamp 
FROM AA55 AS tt 
LEFT JOIN device_link AS dl ON(tt.unit_id=dl.device_id) 
LEFT JOIN device_info AS d2 ON(tt.unit_id=d2.device_id) 
INNER JOIN (SELECT unit_id, MAX(timestamp) AS MaxTimestamp FROM AA55  
GROUP BY unit_id) AS groupedtt 
ON(tt.unit_id = groupedtt.unit_id) 
AND tt.timestamp = groupedtt. MaxTimestamp 
WHERE dl.user_id = '$real_id'; 
関連する問題