2013-02-19 53 views
0

我打破了我的頭試圖修改此查詢(thx sgeddes)以便 不僅從db_events.events字段獲得結果,而是將其與某些db_system結合使用。設備領域修改MYSQL查詢以獲得兩個表之間的JOIN

SELECT e.* 
FROM db_events.events e 
    JOIN (
     SELECT Max(id) MaxId, device_id 
     FROM db_events.events 
     GROUP BY device_id) e2 on e.Id = e2.MaxId AND e.device_id = e2.device_id 
WHERE e.device_id IN (
      SELECT device_id 
      FROM db_system.devices 
      WHERE vendor = 1) 
ORDER BY e.id DESC 

我怎樣才能得到它不重複的子查詢:

  SELECT * 
      FROM db_system.devices 
      WHERE vendor = 1 

我需要得到db_system.devices.branddb_system.devices.model與最終結果加盟, 我試圖修改它一步一步來,我嘗試了臨時表,我懷疑它應該是簡單的,但我一直沒有能夠做到,當然非常感謝你...

回答

3

這是你想要的嗎?

SELECT e.*, a.* 
FROM db_events.events e 
     INNER JOIN 
     (
      SELECT Max(id) MaxId, device_id 
      FROM db_events.events 
      GROUP BY device_id 
     ) e2 on e.Id = e2.MaxId AND 
       e.device_id = e2.device_id 
     INNER JOIN db_system.devices a 
      ON e.device_id = a.device_id AND 
       a.vendor = 1 
ORDER BY e.id DESC 

條件a.vendor = 1也可以在WHERE條款感動,因爲你正在使用INNER JOIN

SELECT .... 
FROM .... JOIN .... 
WHERE a.vendor = 1 
ORDER BY ... 
+1

我想這就是他想要的東西,結果還是一樣 - 我剛纔看到他的評論對我的以前的回答 - 謝謝@JW! +1 – sgeddes 2013-02-19 13:50:49

+0

@ JW,@ sgeddes,夥計們,我試圖理解它,你如何應用邏輯來解決它?似乎在內部解決......嗯,非常感謝。 – user1913878 2013-02-19 14:21:24

+1

子查詢分別爲表db_events.events中的每個'device_id'獲取最大'ID'。子查詢的結果然後在表'db_events.events'(*自排連接*)上重新連接,只要它匹配'MaxID'和'device_id'。然後,表部分結果再次在表db_system.devices中加入,以便您可以獲取記錄具有相同'device_id'的其他值 – 2013-02-19 14:27:10