Mysql 5个表->;显示某些不同的行

Mysql 5个表->;显示某些不同的行,mysql,sql,distinct,outer-join,Mysql,Sql,Distinct,Outer Join,我从一个过滤系统中一次从5个表中提取信息。现在我有三个不同的数据库在运行,看起来很棒。我的问题是我有一些字段,我只想在这些字段上显示不同的信息,而其他字段我想全部显示。为了更好地解释,我将举个例子 我的选择代码: SELECT w.event, w.city, w.DATE, a.TIME, w.tmc, a.weather, a.surface_temperature, p.top,

我从一个过滤系统中一次从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命令存在,只是不确定在这种情况下如何使用它


谢谢

使用
分组依据
修饰符,对要区分的值进行分组。
然后对要在逗号分隔的列表中列出的值使用
组\u 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\u concat
语句中。MySQL也不要求*您将其放入
GROUPBY
子句中

请参阅:

*)您可以强制MySQL执行严格的分组规则,但默认情况下它处于禁用状态


在这里不能使用
distinct
,因为distinct是一个全有或全无的事务,它在所有选定值的集合中运行,而不仅仅是在一个字段上

谢谢你让它看起来更漂亮:)问题是你的结果可能已经很明显了,所以添加关键字不会有帮助。这听起来更像是应用层的问题——每次创建新pin时,首先检查是否存在相同位置的pin,并在必要时进行更新。首先,在SQL查询中使用串联,这是因为。我建议你使用参数!如何使用此方法调用信息?我的方法:不再有效你可以使用
explode
在php中从逗号分隔的列表中提取项目,顺便说一句,你在用什么?不管我怎么想。非常感谢!我正在使用vb,它是这个项目工作所必需的。我现在需要从组名中提取,而不是原始字段名(duh)!还有一个问题。对于TMC来说,这是不确定的。像韦恩堡这样的城市只有一个tmc,所以工作正常。像印第安纳波利斯这样的城市有好几个TMC,但我仍然希望它们在印第安纳波利斯pin下只定义一次。有没有一种方法可以像DISTINCT(group_concat(w.tmc))这样做?