Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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
SQL查询,以确定是否有任何美工人员未与曲目关联_Sql_Sql Server_Join_Subquery - Fatal编程技术网

SQL查询,以确定是否有任何美工人员未与曲目关联

SQL查询,以确定是否有任何美工人员未与曲目关联,sql,sql-server,join,subquery,Sql,Sql Server,Join,Subquery,请帮助回答这个问题: 编写适当的SQL查询,以确定是否有任何美工人员未与曲目关联。我必须使用SELECT、JOIN和WHERE子句。 样本结果: ARTIST_ID ARTIST_NAME ---------------------- AR011 Elvis Presley 我的桌子是这样的: ARTIST_ID ARTIST_NAME TRACK_ID TRACK_NAME TRACK_DURATION --------------------------------

请帮助回答这个问题: 编写适当的SQL查询,以确定是否有任何美工人员未与曲目关联。我必须使用SELECT、JOIN和WHERE子句。 样本结果:

ARTIST_ID  ARTIST_NAME
----------------------
AR011      Elvis Presley
我的桌子是这样的:

ARTIST_ID  ARTIST_NAME    TRACK_ID  TRACK_NAME  TRACK_DURATION
------------------------------------------------------------
AR001      Marshmallow    TR001     Silence     3.5
AR002      Khalid         TR001     Silence     3.5
AR003      The Script     TR001     Silence     3.5
AR004      Sam Smiths     TR001     Silence     3.5
AR005      Nick Jonas     TR001     Silence     3.5
AR006      Goldfish       TR001     Silence     3.5
AR007      Method         TR001     Silence     3.5
AR008      Justin Bieber  TR001     Silence     3.5
AR009      BloodPop       TR001     Silence     3.5
AR010      Pink           TR001     Silence     3.5
AR011      Elvis Presley  TR001     Silence     3.5
AR001      Marshmallow    TR002     Rain        4.0
AR002      Khalid         TR002     Rain        4.0
AR003      The Script     TR002     Rain        4.0

我相信您可以使用
notexists
来测试
ALBUM\u tracks
表中是否存在曲目

select * 
from ARTISTS a
where not exists(select 1
                 from ALBUM_TRACKS tr
                 where a.ARTIST_ID=tr.ARTIST_ID);

根据您在评论中发布的DB结构,应该是这样的:

SELECT a.ARTIST_ID,a.ARTIST_NAME
FROM ARTISTS AS a 
LEFT OUTER JOIN TRACK_ARTISTS AS ta ON ta.ARTIST_ID = a.ARTIST_ID
WHERE ta.ARTIST_ID IS NULL
这意味着您需要使用JOIN子句,正如您在问题中所述


如果联接的表不需要输出,例如在本例中,使用EXISTS是一个更好的选择。

您可以使用左联接来获得请求的结果

SELECT a.*
FROM artists a
LEFT OUTER JOIN album_tracks t ON a.artist_id =t.artist_id
WHERE t.artist_id IS NULL

也许需要提供更多的数据和更好的数据样本。根据这张截图,每个艺术家都有一条轨迹。你使用的是哪种关系数据库管理系统?请提供您的输入和输出数据。这里的大多数人希望样本表数据和预期结果是格式化文本,而不是图像。我看不懂那微小的图像文字。帮助你变得容易@贾尔赫,好的,我会记住的。我是新来的,也不熟悉编码:)请不要通过破坏你的帖子为别人做更多的工作。通过在Stack Exchange网络上发布,您已授予Stack Exchange在下不可撤销的权利,以分发该内容(即,无论您未来的选择如何)。根据堆栈交换策略,帖子的非破坏版本是分发的版本。因此,任何故意破坏行为都将恢复原状。如果您想了解有关删除帖子的更多信息,请参阅:谢谢。有效:)