Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(MYSQL)SQL选择查询-可能是外部连接?_Mysql_Sql_Select - Fatal编程技术网

(MYSQL)SQL选择查询-可能是外部连接?

(MYSQL)SQL选择查询-可能是外部连接?,mysql,sql,select,Mysql,Sql,Select,我正在努力使用一些sql,需要一些帮助。我相信这对很多人来说都是新手 以下是一个例子: 当提供相册ID时,我正在尝试选择相册中没有的所有图片 桌子 画表 相册图片关联表 相册表-我认为不需要在SQL中引用此表 albumid albumname 我正在为相册分配图片,只想显示尚未分配的图片 额外积分:如果我可以选择表中的所有图片,并能够知道哪些图片已经在相册中,而不是从返回的数据中忽略它们,那就更好了。 然后我仍然可以显示图像,只是不允许分配它 希望一切都有意义。 谢谢你的帮助

我正在努力使用一些sql,需要一些帮助。我相信这对很多人来说都是新手

以下是一个例子: 当提供相册ID时,我正在尝试选择相册中没有的所有图片

桌子

画表

相册图片关联表

相册表-我认为不需要在SQL中引用此表

    albumid
    albumname
我正在为相册分配图片,只想显示尚未分配的图片

额外积分:如果我可以选择表中的所有图片,并能够知道哪些图片已经在相册中,而不是从返回的数据中忽略它们,那就更好了。 然后我仍然可以显示图像,只是不允许分配它

希望一切都有意义。 谢谢你的帮助


使用MYSQL 5作为第一个问题,此查询将返回相册图片关联表中没有关联的图片

  SELECT 
    * 
  FROM 
    pictures 
  WHERE 
    pictureid NOT IN (SELECT pictureid FROM album_picture)
返回二者的一个简单方法是添加另一列,执行两个查询,一个为指定的图片,另一个为未指定的图片,并获得两者的并集

  (SELECT pictures.*, 'n' AS `assigned` .... ) UNION (SELECT pictures.*, 'y' AS `assigned` ...)
您可以在相册中找到不包含以下内容的图片:

select pictureid from Album_Picture where albumid != :albumid
select pictureid, albumid=:albumid as in_album from Album_Picture 
您可以在相册中标记以下内容:

select pictureid from Album_Picture where albumid != :albumid
select pictureid, albumid=:albumid as in_album from Album_Picture 

让我们通过尝试创建一个结果表来实现这一点,该表显示了每张图片及其关联的相册。由于左外连接,没有相册的图片的相册信息值为空。ORDERBY语句将把所有空值放在一起

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.albumid

我以前从未见过这种语法。你有相关文档的链接吗?看起来很漂亮。这只是一些数据库连接器的语法;它通常比标准更具解释性?。PDO是这样做的:史蒂夫,虽然我用了不同的答案,但我认为你的第二个select语句是我真正想用的。我的问题相当复杂,因为这张图片/相册只是一个例子。所以我想不出如何适应你的建议。你能用现在的sql来调整它吗:从Daivd Z选择*从图片中选择图片ID不在从相册中选择图片ID图片我真的需要从图片保持不变谢谢David Z。我尝试了第一个,它成功了。它赢了;不返回任何已分配的。我不太明白你的第二个,但我现在很高兴。非常感谢。