2013-02-21 19 views
2

我有3個表格。我需要連接其中的2個,並讓聯接樞轉連接的表以返回行中的值。請閱讀下面的說明。如何在MySQL中加入和旋轉表格

Table 1: 
t1ID Title 
01  Title 1 
01_01 Title 1a 
01_02 Title 1b 
01_03 Title 1c 
02  Title 2 
02_01 Title 2a 
02_02 Title 2b 

...等等

Table 2 (not used in my join, but shown to see relationship between 3 tables -- contains a fixed number of rows which is 10): 
t2ID Description 
01 Desc A 
02 Desc B 
03 Desc C 
... 
10 Desc J 


Table 3: 
t1ID t2ID Value 
01  01 A 
01  02 B 
... 
01  10 C 
01_01 01 D 
01_01 02 E 
... 
02_01 10 F 
02_02 01 G 
02_02 02 H 

...等等

我想加入表1和表3 t1ID其中表1是主或主和表3提供了詳細的值。我需要在t2ID上訂購表3以保持序列,以便我可以正確處理輸出。

我想查詢結果是這樣的:

row[0] row[1] row[2] ... row[10] 
Title 1 A  B   C 
Title 1a D  E 

所以我需要每行有輸出數組作爲標題的第一個項目,然後項目2通過輸出數組的11來從連接表3.

希望是有道理的。

感謝您對我的幫助。

修正(越來越近了,或者至少我不再有衍生別名錯誤消息):

SELECT t1.t1ID, t1.Title, GROUP_CONCAT(t3.Value) AS value 
FROM Table1 AS t1 
JOIN Table3 AS t3 ON t3.t1ID = t1.t1ID 
GROUP BY t3.t1ID 
ORDER BY t1.t1ID 

所有我現在需要做的是表3中T2ID順序排序

任何人都可以協助嗎?

回答

2

可以按如下方式進行排序group_concat()輸出:

SELECT 
    t1.t1ID, 
    t1.Title, 
    GROUP_CONCAT(t3.Value order by t2ID) AS value 
FROM Table1 AS t1 
JOIN Table3 AS t3 ON t3.t1ID = t1.t1ID 
GROUP BY t3.t1ID 
ORDER BY t1.t1ID 

通知的order bygroup_concat()電話。

+0

實際上,我需要對Table3中的t2ID列進行排序,而不是對值列進行排序@Bohemian – 2013-02-22 14:54:42

+0

因此,我更改了您的目標ORDER BY列 - 並且IT工作了!真棒。謝謝@Bohemian – 2013-02-22 14:57:47

+1

很高興幫助。我編輯了答案,以納入你的調整。 – Bohemian 2013-02-22 17:11:13

1

你不能用MySQL輕鬆完成,但GROUP_CONCAT函數可能適合你。查詢應該是這樣的:

SELECT Title, GROUP_CONCAT(Value) AS values 
FROM Table1 AS t1 
    JOIN (
     SELECT t1ID, Value FROM Table3 ORDER BY t2ID ASC 
    ) AS t2 USING(t1ID) 
GROUP BY t1ID 

此查詢的結果會像

Title | values 
---------|------- 
Title 1 | A,B,C 
Title 1a | D,E 

然後,您應該可以值的字符串爆炸到一個數組。如果您確實需要實際調整數據,則this question會提供更有用的信息。

編輯:波希米亞語是正確的,他的方法比我的好,因爲它使用JOIN而不是子查詢。

+0

感謝G-Nugget,爆炸會爲我所需要的工作。我會嘗試你的解決方案併發回。再次感謝 – 2013-02-21 22:53:58

+0

我現在正在測試 - 我收到以下錯誤消息:'每個派生表都必須有自己的別名'@ G-Nugget ...我正在調查它 – 2013-02-22 13:19:51

+0

我已經爲兩者都添加了「AS ...」 'FROM'語句,我仍然收到錯誤消息'每個派生表都必須有自己的別名' – 2013-02-22 13:32:45