我正在根据过滤系统提取最终将来自5个表的信息。现在我有三个不同的数据库在运行,看起来很棒。我的问题是我有某些字段,我只想显示不同的信息和其他我想要显示的所有字段。为了更好地解释,我将举例说明。
我的选择代码:
SELECT w.event,
w.city,
w.DATE,
a.TIME,
w.tmc,
a.weather,
a.surface_temperature,
p.top,
p.LEFT
FROM weather w
LEFT OUTER JOIN application a
ON a.DATE = w.DATE
AND a.tmc = w.tmc
LEFT OUTER JOIN pinlocations p
ON w.city = p.cityname
WHERE w.DATE = '" & datepicker_value.Text & "'
AND w.TIME LIKE '" & eventTime.SelectedItem.Value & "'
我有一张地图,我正在根据p.top和p.left放置引脚。当我点击这个时,我想显示城市名称,tmc,然后根据过滤搜索显示所有其他信息。在上面的示例中,它在引脚顶部创建引脚,为每个字段创建一个新引脚,我希望它是独特的。
我知道存在distinct命令,只是不确定如何在这种情况下使用它。
谢谢!
答案 0 :(得分:1)
对要区分的值使用group by
修饰符
然后对要在逗号分隔列表中列出的值使用group_concat
。
SELECT group_concat(w.event) as events,
group_concat(w.city) as cities,
group_concat(w.`DATE`) as dates,
group_concat(a.`TIME`) as times,
group_concat(w.tmc) as tmcs,
group_concat(a.weather) as weathers,
group_concat(a.surface_temperature) as temperatures,
p.top,
p.LEFT
FROM weather w
LEFT OUTER JOIN application a
ON a.DATE = w.DATE
AND a.tmc = w.tmc
LEFT OUTER JOIN pinlocations p
ON w.city = p.cityname
WHERE w.DATE = '" & datepicker_value.Text & "'
AND w.TIME LIKE '" & eventTime.SelectedItem.Value & "'
GROUP BY p.top, p.left
如果左上角坐标只链接到一个城市(正如您所期望的那样),则无需将其放在group_concat
语句中。 MySQL也不要求你把它放在group by
子句中。
请参阅:
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
*)您可以强制MySQL按规则强制执行严格的分组,但默认情况下它是关闭的。
你不能在这里使用distinct
,因为distinct是全有或全无的事,它在所有选定值的集合中运行,而不仅仅在一个字段上运行。