2017-09-04 34 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'; 

基本上,我需要從表中添加一個名爲nickname列稱爲device_info。我試過tt.unit_id後立即增加價值,但我不斷收到一個錯誤說

Unknown column 'unit_id' in 'on clause' 

暱稱需要通過比較device_info.device_idAA55.unit_id拉。

有沒有辦法做到這一點?先謝謝你。

+0

嘗試改變 「dl.device_id = UNIT_ID」 到 「tt.unit_id = dl.device_id」(我改變了順序,因爲列表TT是你的基地臺)。使用別名需要通過其別名引用該表。 – iLikeMySql

+0

我對添加的好處感到困惑。當我按原樣運行查詢時,它可以很好地工作。例如,當我將其改爲「SELECT tt.unit_id,aa.nickname ... FROM AA55 tt,device_info aa」時發生錯誤。 –

+0

我誤解了你的評論。如果你在tt.unit_id = device_info.device_id上​​加入AA55和device_info,它就會起作用 – iLikeMySql

回答

0

這應該工作:

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'; 
相關問題