2014-02-13 211 views
0

我有兩個具有1-M關係的表。 1)com_event(1)。 2)com_event_schedules(m)GROUP BY多列MySQL查詢

我想獲取所有未來事件的所有時間表。以下是不適用於我的查詢的條件。

  1. 如果schedules.location_id和schedule.date_of_service相同,則這樣的記錄應該是GROUP BY。我爲以下內容撰寫了以下查詢。但它在某些情況下不起作用。那些場景是。

i)如果date_of_service相同但位置不同,它仍然是分組記錄。 ii)如果location_id相同且date_of_service不同,則將未來日期時間表與當前日期時間表分組。

以下是我的查詢:

SELECT schedules.* 
FROM com_event event 
LEFT JOIN com_event_schedules schedules ON event.id=schedules.event_id 
WHERE schedules.date_of_service > CURDATE() 
AND deleted=0 
GROUP BY schedules.location_id, 
schedules.date_of_service 

任何MySQL查詢上的解決方案。 我的要求是記錄應該是GROUP只有當schedules.date_of_service和schedules.location_id是相同的。

+0

請顯示樣本數據和期望的結果。 –

+1

你真的是指GROUP BY(因爲你沒有使用任何分組聚合函數,如SUM(),MAX(),AVG()等)還是你的意思是DISTINCT? –

回答

0

GROUP BY用於對查詢結果進行分組並計算此分組的計數,總和等。

我不確定,但我想你想要一個獨特的結果集。

SELECT DISTINCT schedules.* 
FROM com_event event 
JOIN com_event_schedules schedules ON event.id=schedules.event_id 
WHERE schedules.date_of_service > CURDATE() 
AND deleted=0 

而左連接沒有按順序排列,因爲您實際上會過濾計劃內容。