我有一个按产品ID存储图像URL的表,我正在尝试编写一个查询,将所有图像结果拉到一行。该表看起来像:
photoFlag photoName objectID
其中photoName保存图像的相对路径,photoFlag标识图像的类型(完整,拇指等)。我开始编写一个快速查询来获取两个图像(带有不同的标记)。这就是我所拥有的:
select t2.pic, t4.pic, t2.id from
(select p2.photoName as pic, p2.objectID as id from ds_photos as p2 where p2.photoFlag = 2) as t2,
(select p4.photoName as pic, p4.objectID as id from ds_photos as p4 where p4.photoFlag = 4) as t4
where t2.id=t4.id
这似乎是一个正确的查询,但是当我通过phpMyAdmin执行时,它永远不会返回结果并在“SHOW PROCESS”列表中无限期地显示(好,至少大约40分钟)。有没有我错的东西,我在这里没有看到导致无限循环?
理想情况下,我想只抓取photoFlag = 2的图片(有些产品有多个图像)并将它们放入同一行,但我不知道从哪里开始。有什么建议吗?
感谢您的帮助。
答案 0 :(得分:5)
使用:GROUP_CONCAT
:
SELECT id, GROUP_CONCAT(photoName ) As pic
FROM ds_photos
WHERE (photoFlag = 2 or photoFlag = 4) and id = ?;
GROUP BY id
将?
替换为您想要的ID。