2014-05-11 98 views
0

我有另一種情況Select語句,我想併購一些列具有相同的父ID,但不同的子ID每個每一組,SQLite的:從多個表和合並列

這裏是我的表1;

+---------+----------+ 
|id_table1| value | 
+---------+----------+ 
| 1  | value1 | 
| 2  | value2 | 
| 3  | value3 | 
| 4  | value4 | 
| 5  | value5 | 
| 6  | value6 | 
| 7  | value7 | 
| 8  | value8 | 
| 9  | value9 | 
+---------+----------+ 

表2:

+---------+----------+ 
|id_table1| value | 
+---------+----------+ 
| P1 | valueP1 | 
| P2 | valueP2 | 
+---------+----------+ 

,這是我的關係表:

+---------+----------+---------+ 
|id_boss | id_child | answ | 
+---------+----------+---------+ 
| 1  |  2 | T | 
| 1  |  6 | F | 
| 2  |  P1 | T | 
| 2  |  4 | F | 
| 6  |  P2 | T | 
| 6  |  8 | F | 
+---------+----------+ --------+ 

,我期待的方式來組合列id_child

,其結果將是像這樣:

::編輯::

+---------+-----------+-----------+ 
|id_boss | child_T | child_F |  
+---------+-----------+-----------+ 
| value1 | value2 | value6 | 
| value2 | valueP1 | value4 | 
| value6 | valueP2 | value8 | 
+---------+-----------+-----------+ 

id_child第一排組id_boss是child_T
排和第二排組id_boss是child_F

+1

是否每個老闆有兩個孩子?也就是說,不應該將結果列稱爲「child_T」和「child_F」? –

+0

@cl忽略列answ,我只想顯示整個表, – user3599629

+1

那麼它是如何確定哪個孩子進入第1列或第2列? –

回答

1

這是你想要的嗎?

SELECT (SELECT value FROM table1 WHERE table1.id_table1 = r1.id_boss) AS id_boss, 
     COALESCE((SELECT value FROM table1 WHERE table1.id_table1 = r1.id_child), 
       (SELECT value FROM table2 WHERE table2.id_table2 = r1.id_child) 
       ) AS child_T, 
     COALESCE((SELECT value FROM table1 WHERE table1.id_table1 = r2.id_child), 
       (SELECT value FROM table2 WHERE table2.id_table2 = r2.id_child) 
       ) AS child_F 
    FROM r_table AS r1 JOIN r_table AS r2 
    ON r1.id_boss = r2.id_boss AND r1.id_child <> r2.id_child AND r1.answ = 'T' 
; 

測試here

+0

是的,非常感謝 – user3599629