2013-10-28 61 views
0

我有兩個MySQL表格:tech_requests評論。我想在按「最後修改」日期排序的列表中顯示每個tech_request,無論是tech_request創建的日期還是與tech_request關聯的最新評論。我試圖使用聯盟,但我卡住了。任何想法將不勝感激。這裏是表格:MySQL:從兩個表中查找「最後修改日期」

CREATE TABLE `tech_requests` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `staff_member_id` int(3) NOT NULL, 
    `date_time` datetime NOT NULL, 
    `request` text NOT NULL, 
    `building_id` int(2) NOT NULL, 
    `technician_id` int(2) DEFAULT NULL, 
    `completed` tinyint(1) NOT NULL, 
    `subject` varchar(30) NOT NULL DEFAULT '', 
    `category_id` int(2) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=203 DEFAULT CHARSET=utf8; 

CREATE TABLE `comments` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `tech_request_id` int(11) NOT NULL, 
    `technician_id` int(2) NOT NULL, 
    `date_time` datetime NOT NULL, 
    `comment` text NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=234 DEFAULT CHARSET=utf8; 
+0

問題要求代碼必須表現出對問題的理解最小正在解決。包括嘗試解決方案,爲什麼他們沒有工作,以及預期的結果。 – Kermit

+0

如果一個技術請求可以有很多評論,那麼你不能只根據評論的'date_time'來訂購技術請求,因爲它可以有很多評論:) –

+0

注意到,糟糕的禮節對不起 – ISOcrates

回答

0

你在找這樣的嗎?

SELECT r.id, r.staff_member_id, ..., 
     GREATEST(r.date_time, COALESCE(c.date_time, 0)) last_modified 
    FROM tech_requests r LEFT JOIN 
(
    SELECT tech_request_id, MAX(date_time) date_time 
    FROM comments c 
    GROUP BY tech_request_id 
) c 
    ON r.id = c.tech_request_id 
ORDER BY last_modified 

這裏是SQLFiddle演示

+0

也喜歡SQLFiddle演示,之前從未見過 – ISOcrates