连接 - 从一个表中获取行然后获取在另一个表中匹配的所有行?但不应重复第一个表匹配行

时间:2016-09-22 12:39:35

标签: php mysql join

我有两张桌子。画廊和加入。

Gallery
id | title
 1 | Dog Gallery
 2 | Cat Gallery

Joins
id | gallery_id | picture_id
 1 |      1     |     100
 2 |      1     |     101
 3 |      2     |     56
 4 |      1     |     102

我想从图库中获取id,图库标题 - 其中id等于特定ID,但也从图库ID等于特定图库ID的联接中获取所有行。

所以对于上面,如果id为1.我希望来自gallery的图库和picture_ids 100,101和102来自加入。

现在的问题是画廊标题应该来一次。 结果是title = dog gallery picture_id = 100,title = dog gallery picture_id = 101,title = dog gallery picture_id = 102我需要这样的结果 title = dog gallery picture_id = 100,picture_id = 101和picture_id = 102

1 个答案:

答案 0 :(得分:1)

您可以使用GROUP_CONCAT将所有ID作为字符串

SELECT G.*, GROUP_CONCAT(DISTINCT P.picture_id ORDER BY P.picture_id DESC SEPARATOR ',') 
FROM gallery as G
LEFT JOIN pictures as P ON P.gallery_id = G.id 
GROUP BY G.id;