2011-04-08 58 views
0
Table name-userdb, 
id | name | value, 
1 | fname | anand, 
1 | lname | kumar, 
1 |city  | bangalore, 
2 |fname |mahesh, 
2 |lname |sahoo, 
2 |city  |manglore, 
3 |fname |anil, 
3 |lname |singh, 
3 |city  |balasore.. 

我需要DISPLY像劈裂一列分成几个栏

fname | lname | city, 
anand | kumar | bangalore, 
mahesh | sahoo | manglore, 
anil |singh |balasore, 

这个请给我的MySQL查询

+0

你已经问这个确切的同样的问题的http://计算器。 com/questions/5593708/what-query-should-we-use-to-split-1colmnn-into-multiple-column – 3urdoch 2011-04-08 10:58:26

+0

yaa..but did not get the answer .. – pritosh 2011-04-08 11:01:46

+1

可能需要超过几分钟才能获得回答,如果你更好地解释你的问题,你可能会有更多的运气。再次发布完全相同的问题不太可能得到更好的回应。 – 3urdoch 2011-04-08 11:03:10

回答

0

我强烈建议重组你的数据库,这是不是一个可行的办法处理请求。

SELECT udb1.value as fname, udb2.value as lname, udb3.value as city 
FROM `name-userdb` udb1 
JOIN `name-userdb` udb2 ON udb1.id=udb2.id AND udb2.name='lname' 
JOIN `name-userdb` udb3 ON udb1.id=udb3.id AND udb3.name='city' 
WHERE udb1.name='fname'; 

再次!这是not正确的做法! 我只是把答案放在这里,因为它看起来类似于标签/过滤器系统,并且有人可能需要答案。

+0

你应该考虑将这种数据保存在多个字段中,并执行一个'select * FROM userdb WHERE id = 1;'! – Khez 2011-04-08 11:18:04

+0

你可以做到这一点,没有使用最大(case ...)构造和一个组的 – 2011-04-08 11:20:06

+1

@Simom多路加入“添加另一个答案”迫使你! – Khez 2011-04-08 11:23:50

0

嗯.. EAVS ...超出实际执行归一化的设计明显的建议,你可以达到你想要的东西,像这样:

Select Min(Case When name = 'fname' Then value End) As fname 
    , Min(Case When name = 'lname' Then value End) As lname 
    , Min(Case When name = 'city' Then value End) As city 
From MyTable 
Group By Id