2014-09-27 77 views
0

我有我的數據庫2個表所示:查詢來從表中多條記錄在同一行

porfolio

id | title | content 
----+--------+------------------- 
1 | hello | aksjdhaksd.. 
2 | hi | asdasd.. 
----+--------+------------------- 

portfolio_image

id | portfolio_id | image 
----+---------------+------------------- 
1 | 1   | a.jpg 
2 | 1   | b.jpg 
3 | 2   | c.png 
4 | 2   | d.png 
----+---------------+------------------- 

我想提取數據,以便從同一個r中的第二個表中獲取組合表中的所有數據和它們各自的圖像流量:

我的意思是這樣的:

id | title | content  | image1 | image2 
----+-------+---------------+--------+------------- 
1 | hello | aksjdhaksd.. | a.jpg | b.jpg 
2 | hi | asdasd..  | c.png | d.png 
----+-------+---------------+------------------------------ 

請幫我

+0

但是,你爲什麼要這樣做? – Strawberry 2014-09-27 11:48:16

回答

1

如果每個投資組合只有兩個圖像,那麼你可以做:

select p.id, p.title, p.content, 
     min(pi.image) as image1, 
     (case when max(pi.image) <> min(pi.image) then max(pi.iamge) as image2 
from portfolio p join 
    portfolio_image pi 
    on p.id = pi.portfolio_id 
group by p.id, p.title, p.content; 

如果你有多個圖像,最簡單的方法是將它們放入單個列中,使用group_concat()

select p.id, p.title, p.content, group_concat(pi.image) as images 
from portfolio p join 
    portfolio_image pi 
    on p.id = pi.portfolio_id 
group by p.id, p.title, p.content; 

如果您有多個圖像,不知道有多少個,需要在一個單獨的列中。那麼你需要一個動態的支點。我會建議你谷歌「MySQL動態數據透視」來找到一些例子。