2016-03-04 20 views
1

我已經壓扁一個多對多的關係,以使一個CSV導出。拼合多對多關係的CSV出口

我的表:

用戶:

------------ 
|id | Name | 
------------ 
| 1 | John | 
| 2 | Doe | 

USER_GROUP:

------------------- 
|idUser | idGroup | 
------------------- 
| 1  | 1  | 
| 1  | 2  | 
| 2  | 2  | 

集團:

------------ 
|id | Name | 
------------ 
| 1 | Foo | 
| 2 | Bar | 

而且我希望有一個輸出像這樣:

-------------------------------- 
| Name | Foo group | Bar group | 
-------------------------------- 
| John | x   | x   | 
| Doe |   | x   | 

我完全失去了,沒有的我應該做的想法,任何幫助,將不勝感激。

+0

實際上,他需要用聯接樞軸查詢相結合。 –

回答

1

基本支點查詢與幾個相結合加入會給你你想要的結果:

SELECT t.name, 
    CASE WHEN SUM(t.FooGroup) > 0 THEN 'x' ELSE '' END AS `Foo group`, 
    CASE WHEN SUM(t.BarGroup) > 0 THEN 'x' ELSE '' END AS `Bar group` 
FROM 
(
    SELECT u.Name, 
     CASE WHEN g.Name = 'Foo' THEN 1 ELSE 0 END AS FooGroup, 
     CASE WHEN g.Name = 'Bar' THEN 1 ELSE 0 END AS BarGroup 
    FROM User u INNER JOIN User_Group ug 
     ON u.id = ug.idUser 
    INNER JOIN Group g 
     ON ug.idGroup = gl.id 
) t 
GROUP BY t.name 
+0

感謝您的回答,但它沒有似乎工作,語法不正確 '#1064 - 你在你的SQL語法錯誤;檢查對應於您MariaDB的服務器版本使用附近的正確語法手冊 'FROM ( SELECT u.Name, CASE WHEN g.Name = '富' THEN 1 ELSE 0 END' 在行4' ---我使用MySQL的'15.1版本10.1.12 DISTRIB,MariaDB的,對於Linux下(x86_64)使用readline的5.1' – Gwendal

+0

第二外'CASE'後聲明中刪除逗號。再次複製我的查詢和嘗試一次,它應該工作。 –

+0

真棒!就像一個魅力,非常感謝!從來沒有聽說過支點疑問,我會做一些關於它的搜索。 – Gwendal