Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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 - Fatal编程技术网

Sql 为尚未写书的作者选择名称

Sql 为尚未写书的作者选择名称,sql,Sql,我们必须选择没有写过书的作者,但是有3个不同的表,这让我对如何编写连接表达式感到困惑 我们有桌子: authors: author_id authorships: author_id, book_id books: book_id. 显然,我从作者那里选择了名字,并尝试了内部连接,但它对我不起作用。谢谢你的帮助 这是使用左连接反模式的好地方: SELECT a.* FROM authors a LEFT JOIN authorships s ON s.author_id = a.author

我们必须选择没有写过书的作者,但是有3个不同的表,这让我对如何编写连接表达式感到困惑

我们有桌子:

authors: author_id
authorships: author_id, book_id
books: book_id. 

显然,我从作者那里选择了名字,并尝试了内部连接,但它对我不起作用。谢谢你的帮助

这是使用
左连接
反模式的好地方:

SELECT a.*
FROM authors a
LEFT JOIN authorships s ON s.author_id = a.author_id
WHERE s.author_id IS NULL

理由:
LEFT JOIN
为空时,表示作者在
authorships
表中没有相应的记录。
WHERE
子句仅过滤不匹配的
作者
记录(即没有书籍的作者)。这称为反模式,因为
连接的目的通常是匹配记录,而在这里我们使用它来检测不匹配的记录。

这是使用
左连接
反模式的好地方:

SELECT a.*
FROM authors a
LEFT JOIN authorships s ON s.author_id = a.author_id
WHERE s.author_id IS NULL

理由:
LEFT JOIN
为空时,表示作者在
authorships
表中没有相应的记录。
WHERE
子句仅过滤不匹配的
作者
记录(即没有书籍的作者)。这被称为反模式,因为
连接的目的通常是匹配记录,而这里我们使用它来检测不匹配的记录。

因为这听起来像是学校作业,所以我不会给出完整答案

尝试在作者和作者之间使用外部连接。确保你能从作者那里找到我要的那本书


试着找出一个没有发表过文章的作者是什么样子的。您可以使用该语句,通过适当的where子句对所需答案进行查询。

因为这听起来像是学校作业,所以我不会给出完整答案

尝试在作者和作者之间使用外部连接。确保你能从作者那里找到我要的那本书


试着找出一个没有发表过文章的作者是什么样子的。您可以使用它来制定查询,以获得您正在寻找的答案,并使用适当的where子句。

这非常简单,只要检查这三个表之间的哪一列似乎具有公共值,如果两个表中至少有公共值,则将内部联接放在这两个表上,将外部联接放在不常见数据表上


请记住,当您在不同的表之间进行连接时,别名总是很重要的,而且应该正确地提到ON和WHERE。

这很容易,只要检查这三个表之间哪个列似乎有公共值,如果两个表中至少有公共值,那么将内部联接放在这两个表上,将外部联接放在不常见的数据表上


请记住,当您在不同的表之间进行连接时,别名总是很重要的,而且应该正确地提到ON和WHERE。

为什么是反模式?为什么是反模式?我试图解析以下语句:作者怎么可能没有写过书?我试图分析这样一种说法:一个作者怎么可能没有写过一本书呢?这个人凭什么声称是作者?