gpt4 book ai didi

mysql - 加入相册并查看其图像数和封面?

转载 作者:行者123 更新时间:2023-11-29 07:50:30 24 4
gpt4 key购买 nike

我正在尝试使用 MySQL 从两个表中获取特定结果,以下是两个表的格式:

          Albums                                         Images
------------------------------ ----------------------------
id | name | cover id | image | album
------------------------------ ----------------------------
1 | album1 | 3 1 | image1.jpg | 2
2 | album2 | 1 2 | image2.jpg | 3
3 | album3 | 0 3 | image3.jpg | 1
4 | album4 | 0 4 | image4.jpg | 1
------------------------------ 5 | image5.jpg | 3
6 | image6.jpg | 1
----------------------------

现在给出上面的表格,我希望结果如下所示:

---------------------------------------
id | name | count | cover
---------------------------------------
1 | album1 | 3 | image3.jpg
2 | album2 | 1 | image1.jpg
3 | album3 | 2 | null
4 | album4 | 0 | null
---------------------------------------
  • count 是给定相册中的图像数量
  • cover 是 id 与专辑封面列中的内容相匹配的图像

我尝试了一些查询,但没有一个给出我想要的结果。

SELECT a.id, 
a.name,
count(p.id) AS imageCount,
(SELECT image
FROM albums,
photos
WHERE albums.cover = photos.id)
FROM photos p
RIGHT OUTER JOIN albums a
ON a.id=p.album
GROUP BY a.id;

这只会导致每行列出相同的封面图像。

我也尝试过这个:

SELECT a.id, 
a.name,
count(p.id) AS imageCount,
coverTable.image
FROM photos p
RIGHT OUTER JOIN albums a
ON a.id=p.album
RIGHT OUTER JOIN (SELECT albums.id,
image
FROM albums,
photos
WHERE albums.cover = photos.id) AS coverTable
ON coverTable.id = a.id
GROUP BY a.id;

这只会为具有封面图像的一张专辑生成一行。

最佳答案

SELECT a.id, a.name, count(p1.id) AS imageCount, p2.image as cover
FROM albums a
LEFT JOIN photos p1 ON p1.album = a.id
LEFT JOIN photos p2 ON p2.id = a.cover
GROUP BY a.id

DEMO

关于mysql - 加入相册并查看其图像数和封面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26559167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com