2016-01-03 23 views
3

我有一個數據庫表爲我的網站的用戶,此表給每個用戶一個user_id。如何從數據庫合併數組數據

使用規範化,我已將用戶鏈接到具有user_group表的用戶組,其中包括user_id和group_id以將用戶鏈接到組。

然後我有一個組表將組名稱鏈接到group_id。

我想輸出在我的網頁上的用戶名旁邊的列表中的組,而不是它的ID。

我想使用foreach循環來做到這一點,但數據需要進入一個數組?我不知道如何取user_id,找出它與之配對的是哪個組,找出該id與之配對的組名,然後將其添加到具有名稱的數組中,並能夠顯示組名到使用foreach的用戶名。

感謝您的任何幫助。

+0

在您的SQL xlause中使用LEFT JOIN。 – Terminus

回答

2

如果我正確地理解了你,你想加入你的用戶數據進行分組,以顯示用戶的詳細信息和他們的組名。

試試這個:

select u.*,g.*,ug.* from users u 
left join user_group ug on u.user_id=ug.user_id 
left join `group` g on ug.group_id=g.group_id; 

從上面查詢,你可能會得到空值對於一些用戶,誰沒有分配到任何組。

+0

這將返回一個包含用戶及其相應group_id的數組(如果它們在一個組中)。有沒有什麼辦法可以純粹使用SQL我可以離開這個,還可以根據剛添加到用戶數組中的group id從groups表中找到group_name?希望這是有道理的... –

0

我不明白爲什麼左連接是必要的。除非他想顯示沒有羣組的用戶,否則應該定期加入。

順便說一下,這是一個完美的例子,應該在數據庫中用select來完成。從這些表中拉出所有內容並嘗試在java中對它們進行排序並不是一個好主意。也許我讀這篇文章錯了。

+0

我使用php不是java –