我正在从一个过滤系统中提取最终将从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命令存在,只是不确定在这种情况下如何使用它。
谢谢!
发布于 2011-08-23 23:46:09
对要区分的值使用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是一个要么全有要么全无的事件,它在所有选定值的集合中操作,而不仅仅是在一个字段上操作。
https://stackoverflow.com/questions/7163622
复制相似问题