2014-09-27 76 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动态数据透视”来找到一些例子。