2011-08-08 29 views
0

我想知道是否有可能作出选择在包含多个字段的表,并在1个结果加入他们的行列:加入多个字段从同一个表

例子:

表:

id 
dayOne_City 
dayTwo_City 
dayThree_City 

结果:一列包含所有城市的行(Distinct)。

2)我更好地做一个视图,如果我有很多的查询到特定的列表?

3)我应该做3选择与联盟?

谢谢您对使用here功能

+1

你应该做的是重构你的数据库以获得一个相关的表。 – HLGEM

+1

你是对的,我们设计表时,我们犯了一个错误......现在支付价格:) – Tarek

回答

5

您应该罚款:

select dayOne_City from YourTable 
UNION 
select dayTwo_City from YourTable 
UNION 
select dayThree_City from YourTable 

但是,你应该检查你的设计,让每什么 - 是 - 是 - 你的表存储多个城市。也就是说,通过在YourTableCities之间创建一个中间表来创建实际的多对多关系。

+0

应该我从中创建一个视图或按原样使用它?如果城市与某个地区相关联,那么有什么方法可以生成2列结果? (地区 - 城市) – Tarek

+0

关于视图创建:如果您在多个位置查看此信息,那么,是的,您应该创建一个视图。是的,你可以把它与区域相关联:'内部连接'每个选择'城市'(也许'区域')并获得所需的区域列。 –

+0

该地区与城市同一张桌子,同一行 – Tarek

0
select concat_ws(',', id, dayOne_city, dayTwo_city, dayThree_city, etc...) as allInOne 

详细信息。但是,我应该问为什么你这样做。通过将这些字段加入到一起,您将摧毁任何稍后再次可靠地提取/分离数据的机会。如果您从未打算根据此查询的结果计划在别处使用单独的数据部分,则只能进行这种“扩展”。

+0

对不起,我认为我住的地方解释正确,我不需要做一个concat我想从所有的领域提取所有城市 – Tarek