2011-04-08 72 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