2014-02-13 156 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 

而左连接没有按顺序排列,因为您实际上会过滤计划内容。