我的數據庫(MySQL的)有2個表SQL SELECT,獲取最新的每節車廂進入
表1 - 每個汽車
汽車= ID(INT)的紀錄,REG(INT)類型(INT)
表2 - 包含工作每輛車
工作= ID(INT),日期(日期)
我需要一個SELECT命令,這將讓我最近的工作全部ID的
在此先感謝。
我的數據庫(MySQL的)有2個表SQL SELECT,獲取最新的每節車廂進入
表1 - 每個汽車
汽車= ID(INT)的紀錄,REG(INT)類型(INT)
表2 - 包含工作每輛車
工作= ID(INT),日期(日期)
我需要一個SELECT命令,這將讓我最近的工作全部ID的
在此先感謝。
您沒有共享領域,你不能做到這一點。您需要爲每個作業存儲關聯的car_id,或者有一個jobs_to_cars表。
然後你會使用:
SELECT C.*, J.id, MAX(J.date)
FROM cars C
INNER JOIN jobs J on J.car_id = C.id
GROUP BY C.id
如果作業的ID作爲汽車的ID,然後更改j.car_id到j.id相同,但隨後你會缺乏喬布斯的主鍵,這是我建議你開始製作。
這不行。 – zerkms 2010-11-19 01:26:43
MySQL錯誤1111:使用組函數 – 2010-11-19 01:27:55
無法使用max或join?我解釋了爲什麼連接不工作,我沒有時間測試最大值。如果你需要在那裏找到第二個查詢,或者選擇最大,然後使用它。 – 2010-11-19 01:28:11
您可以嘗試
ORDER BY date DESC
SELECT *
FROM cars c
INNER JOIN (SELECT MAX(id) AS j_id
FROM jobs
GROUP BY car_id) x ON x.j_id = c.id
jobs.car_id
場,指定哪輛車的工作屬於car.last_job_id
,並觸發維持它jobs
表。因爲你的問題是不明確的,這個查詢也可以是一個答案:
SELECT j.*
FROM jobs j
INNER JOIN (SELECT MAX(id) id
FROM jobs
GROUP BY car_id) x ON x.id = j.id
它很好,你認爲他忘了jobs.car_id ...我認爲沒有可以連接的領域......兩者都是危險的假設。我不認爲添加一個字段會是我認爲優雅的... – WernerCD 2010-11-19 05:21:32
你可以使用類似這樣
SELECT c.*, MAX(j.date) date
FROM cars c
LEFT JOIN jobs j ON j.id = c.id
GROUP BY c.id
ORDER BY c.id
,因爲你沒有在其他領域[工作]。如果一輛汽車沒有任何工作,日期將爲空。
那是整個數據庫嗎?還是你爲我們簡化它?如果你有工作......和一輛車......他們需要以某種方式相關...... – WernerCD 2010-11-19 05:20:55