2009-07-20 134 views
2

已經有大量的sql連接q已經存在,但是我沒有看到我的答案,所以在這裏。 。 。我正在使用WPDB(Wordpress數據庫)/ EZSql/MySQL 5.0。試圖實現下面的'簡單'期望輸出並不容易。SQL將列中的多個值合併爲一個單元

電流輸出

MemberID   MemberName    FruitName 
-------------- --------------------- -------------- 
1     Al      Apple 
1     Al      Cherry 

希望的輸出

MemberID   MemberName   FruitName 
-----------  --------------  ------------ 
1     Al     Apple, Cherry 

MEMBERID來自表中的,成員名稱來自表A和表B,並且FruitName來自表B。因爲我從表中的輸出了很多其他列的,我曾經使用過此查詢「左加入」兩個表:

 <td><?php echo $content->MemberID ?></td> 
     <td><?php echo $content->MemberName ?></td> 
     <td><?php echo $content->FruitName ?></td> 

我認爲:

$contents = $wpdb->get_results($wpdb->prepare("SELECT * FROM a LEFT JOIN b ON a.MemberName = b.MemberName")); 

後來我用echo打印的列我應該嘗試以不同的方式查詢/連接兩個表格,儘管在打印列時可能會有創意。我發現這個discussion here,並且模仿了我的問題,但我不明白他們的解決方案,並希望更簡單些。

回答

3

GROUP BY成員名稱和GROUP_CONCAT(FR uitName)。例如,

SELECT MemberId, MemberName, GROUP_CONCAT(FruitName) FROM a LEFT JOIN b ON a.MemberName = b.MemberName GROUP BY a.MemberName; 
+0

嗯,試過這個,並得到一個錯誤,說MemberName是一個模棱兩可的領域,所以我改變了SELECT MemberID,MemberName到SELECT MemberID , 一個。成員名稱和我的出放看起來像這樣: MEMBERID成員名稱GROUP_CONCAT(FruitName) 1的Al [BLOB - 3 B] <-concatenating 2 A2 [BLOB - NULL] 3 A3 [BLOB - NULL] – Adam 2009-07-20 11:46:36

0

一種方法是循環和建立在PHP輸出(或任何語言喲正在使用)。

從數據庫獲取行或將數據提交給用戶時連接水果。 Id建議後者,因爲它更像是一個視圖邏輯問題。

如果你想用SQL來完成,你必須創建你自己的(我不相信MySQL有內置的,但我可能是錯的)聚合函數來連接字符串。它並不那麼微不足道。

如果您只讀取一個成員,你也可以做到這一點在SQL使用變量,林uncertaing關於確切的MySQL的語法,但對於MSSQL會是這樣的:

DECLARE @frutis VARCHAR(MAX) 

SELECT @fruits = ISNULL(@fruits + ', ' + FruitName, FruitName) 
FROM ... 

SELECT @fruits 
1
SELECT MemberID, MemberName, GROUP_CONCAT(FruitName SEPARATOR ',') FROM a LEFT JOIN b ON a.MemberName = b.MemberName GROUP BY MemberID, MemberName; 
+0

有與下面完全相同的問題 – Adam 2009-07-20 11:49:47

0

@Adam 我知道這可能會晚點來回答,但我只是碰到了同樣的問題,所以這裏是我的解決方案來擴展麥克回答和解決了多個相同的水果OCCURENCES:

SELECT MemberId, MemberName, GROUP_CONCAT(distinct FruitName) FROM a LEFT JOIN b ON a.MemberName = b.MemberName GROUP BY a.MemberName; 

所以基本上你只需要在GROUP_CONCAT函數中添加「distinct」。

我希望有幫助。

相關問題