MySQL将多行连接到一列

时间:2014-11-07 15:13:37

标签: php mysql sql logic

我需要创建一个SQL语句将多行连接到一列。我有三个表,如下所示。我需要加入它们以获得每个产品的1行(即group by products.id)。

products_images表中每个产品最多可以有6个图像。即使没有产品图像,我也需要为每个图像添加一列。

Products Table
---
id
product_name
supplier_id


Suppliers Table
---
id
company_name


Product Images Table
---
id
product_id
fullsize

以下是我想要实现的一个示例转储:

id  product_name   company_name  image1     image2     image3     image4     image5     image6
1   Ballpoint pen  Impression    img/1.jpg  img/2.jpg  img/3.jpg  img/4.jpg  img/5.jpg  null
2   T-shirt        Impression    img/6.jpg  img/7.jpg  img/8.jpg  null       null       null
3   Jumper         Impression    null       null       null       null       null       null

如您所见,第一个产品有5个图像,第二个产品有3个,最后一个产品有0个图像。

如何达到上述效果?

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要研究使用CASE语句。

例如。

SELECT id,
 product_name,
 company_name,
 CASE WHEN Product Images Table.id = 1  THEN image1 ELSE NULL END AS image1,
 CASE WHEN Product Images Table.id = 2  THEN image1 ELSE NULL END AS image2
 ....
 FROM Products Table
 JOIN Suppliers Table
 JOIN Product Images Table