我在MySQL的兩個表兩張表選擇從哪兒第二表中的行應顯示爲列第一
id | name | date
1 | Test Entry | 12/12/2013
2 | Test Entry 2 | 12/12/2013
表注
id | entry_id | name | value
1 | 1 | note1 | value1
2 | 1 | note2 | value2
3 | 2 | note1 | value1
4 | 3 | note4 | value4
其中entry_id
在note
是id
的外鍵在entry
。
是否有任何解決方案,我可以創建一個SELECT
,會給我一個像下面的結果?
entry_id | name | note1 | note2 | note3
1 | Test Entry | value1 | value2 | -
2 | Test Entry 2 | value 1 | - | value3
我想避免LEFT JOIN
這裏(當前實現這樣工作),並希望加入note
只有一次,如果這是可能的。 LEFT JOIN
在這裏不好,因爲我不知道一個條目可以附加多少筆記。我目前的實現以這種方式工作,我首先通過note
中的名稱獲取所有不同的筆記,然後通過PHP爲foreach構建SELECT。最後,SELECT
語句如下所示:
SELECT
E.id as entry_id,
E.name as name,
N1.value as note1_value,
N2.value as note2_value,
N3.value as note3_value
FROM entry E
JOIN LEFT note N1 ON E.id = N1.entry_id AND N1.name = 'note1'
JOIN LEFT note N2 ON E.id = N2.entry_id AND N2.name = 'note2'
JOIN LEFT note N3 ON E.id = N3.entry_id AND N3.name = 'note3'
事情變得棘手,當我在note
20-30次加入。
這將是我們更容易幫助你,如果你設置了[ SQL小提琴](http://sqlfiddle.com/) – 2013-05-02 18:43:54
立即處理該問題。 – user1478283 2013-05-02 18:47:14
JS小提琴網址:http://sqlfiddle.com/#!2/0b7ae/1 – user1478283 2013-05-02 18:54:33