我正在为一些sql而挣扎,可能需要一些帮助。我相信这对很多人来说都是很新鲜的东西。
这里有一个例子:当提供白蛋白时,我正在尝试选择不在相册中的所有图片。
表
图片表
pictureid
picturenameAlbum_Picture关联表
albumpictureid
albumid
pictureid相册表-我不认为这个表需要在SQL中引用。
albumid
albumname我将图片分配到一个相册,并希望只显示尚未分配的图片。
额外学分:如果我能够选择表中的所有图片,并且能够知道相册中已经有哪些图片,而不是从返回的数据中忽略它们,那就更好了。然后,我仍然可以显示图像,只是不允许它被分配。
希望这一切都有意义。谢谢你的帮助。
使用MYSQL 5
发布于 2012-04-20 03:12:17
对于第一个问题,这个查询将返回在album_picture关联表中没有关联的图片。
SELECT
*
FROM
pictures
WHERE
pictureid NOT IN (SELECT pictureid FROM album_picture)返回两者的一种简单方法是添加另一列,执行两个查询(一个给出分配的图片,另一个给出未分配的图片),并得到两者的联合。
(SELECT pictures.*, 'n' AS `assigned` .... ) UNION (SELECT pictures.*, 'y' AS `assigned` ...)发布于 2012-04-20 03:13:07
您可以找到不在相册中的图片:
select pictureid from Album_Picture where albumid != :albumid您可以将相册中的内容标记为:
select pictureid, albumid=:albumid as in_album from Album_Picture 发布于 2012-04-20 03:15:10
让我们尝试创建一个结果表来显示每一张图片及其相关联的相册。由于左边的外接,没有相册的图片将对相册信息有一个空值。通过陈述的命令将所有的无效组合在一起。
select p.pictureid, p.picturename, a.albumid, a.albumname
from picture p
left outer join album_picture ap
on p.pictureid = ap.pictureid
left outer join album a
on ap.albumid = a.albumid
order by a.albumidhttps://stackoverflow.com/questions/10239721
复制相似问题