2015-09-16 26 views
0

我是新來的這個SQL。我只想問懷疑有關SQL(我使用SQL Server 2012)如何在sql中獲取同一列中的輸出?

兩個表:

狀態:

SELECT * FROM [DBO] [美國]

StateId StateName 

    1  Odisha 

    2  West Bengal 

    3  Bihar 

    4  Jharkhand 

地區:select * from [dbo]。[區]

DistrictId   StateId   DistrictName 

1     1     Mayurbhanj 

2      1     Keonjhar 

3      1     Khorda 

4      1     Balasore 

5      2     Hoogly 

6      2     Howrah 

7      2     Jalpaiguri 

8      3     Aurangabad 

9      3     Patna 

10     4     Bokaro 

我試過這個加入查詢

從狀態s參加區上s.stateid = d.stateid

d選擇s.StateName,d.DistrictName和輸出了這樣

stateName   districtName 

    Odisha    Mayurbhanj 

    Odisha    Keonjhar 

    Odisha    Khorda 

    Odisha    Balasore 

    West Bengal  Hoogly 

    West Bengal  Howrah 

    West Bengal  Jalpaiguri 

    Bihar    Patna 

    Jharkhand   Bokaro 

    Bihar    Aurangabad 

,但我想這樣

輸出
Odisha    //statename 
Mayurbhanj 
Keonjhar   //district names 
Khorda 
Balasore 
West Bengal  //statename   
Hoogly 
Howrah 
Jalpaiguri 
Bihar    //statename 
Aurangabad 
Patna 
Jharkhand   //statename 
Bokaro 
在同一列

....

是有可能在使用查詢或存儲過程辦??請幫我整理一下

+0

哪數據庫你使用的是SQL Server或MySQL?請不要標記您未使用的產品! –

+1

就我個人而言,我不會使用SQL來做這種格式化,而是您想要呈現這些數據的應用程序。你爲什麼要這樣的輸出/你如何向用戶/什麼應用程序呈現數據? – larsts

回答

1

如果你使用php,你可以使用主查詢來用while循環填充狀態。然後添加另一個子查詢來填充每個狀態下的區域,使用主循環內的另一個while循環。我希望這會幫助你獲得它。問候 !

2

如果你真的想這樣做的SQL,這裏是使用UNION ALL一個辦法:

SELECT Name 
FROM (
    SELECT 0 AS DistrictId, StateId, StateName AS Name FROM states 
    UNION ALL 
    SELECT * FROM district 
)AS t 
ORDER BY StateId, DistrictId 
+0

它解決了@Felix謝謝。但你在這裏使用什麼樣的概念? – Priya

+0

你是什麼意思?你只需要使用'UNION ALL'和'ORDER BY StateId,DistrictId'結合兩個表的所有行。 –

0

您可以使用GROUP_CONCAT如果你想獲得的結果在一個單一的查詢

SELECT s.StateName 
    ,GROUP_CONCAT(d.DistrictName) 
FROM states s 
INNER JOIN district d ON s.StateId = d.StateId 
GROUP BY s.StateId 
+0

如果我運行這個查詢,我得到這樣的錯誤「'GROUP_CONCAT'不是一個公認的內置函數名稱。」 – Priya

+0

如果您使用的是SQL Server 2012,則可以使用此方法「SELECT STUFF( (SELECT','+ Column_Name FROM Table_Name FOR XML PATH('')) ,1,1,'')」 – Ninju

相關問題