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

Mysql SQL中的子查询混淆

Mysql SQL中的子查询混淆,mysql,sql,Mysql,Sql,只使用一个基本的SQL程序来运行一些小东西,所以答案应该非常简单和小。但数据库中有两个表,其中一个表被标记为: tAuthors与fAuthorID和fAuthorName,接下来我有一本与fAuthorID、fPubID……等有关的书(我只想使用这两本书中的一本)。并拥有具有fPubID和fPubName的tpublisher 所以我一直想做的就是列出所有作者的名字,这些作者的书名由出版商出版,ID号为12;按字母顺序列出作者姓名。我记下了字母顺序部分,但似乎能找到正确的作者姓名。这是我得到的

只使用一个基本的SQL程序来运行一些小东西,所以答案应该非常简单和小。但数据库中有两个表,其中一个表被标记为:

tAuthors与fAuthorID和fAuthorName,接下来我有一本与fAuthorID、fPubID……等有关的书(我只想使用这两本书中的一本)。并拥有具有fPubID和fPubName的tpublisher

所以我一直想做的就是列出所有作者的名字,这些作者的书名由出版商出版,ID号为12;按字母顺序列出作者姓名。我记下了字母顺序部分,但似乎能找到正确的作者姓名。这是我得到的,但它只吸引了一位作者,我相信这里有7位作者,他们的身份证号码是12

 SELECT `fAuthorName`, `fAuthorID`
 FROM `tAuthors`
 WHERE `fAuthorID` IN (
     SELECT `fPubID`
     FROM `tPublishers`
     WHERE `fPubID` = 12
 )
 ORDER BY `fAuthorName` ASC;      

可能更容易进行连接。Authors表通过author id连接到Books表,Books表通过publisher id连接到publisher表。一旦它们全部连接起来,您就可以通过pub id进行筛选和排序

 SELECT `a.fAuthorName`, `a.fAuthorID`
 FROM `tAuthors` a
 JOIN `tBooks` b ON (a.fAuthorID = b.fAuthorID )
 JOIN `tPublishers` p ON (b.fPubID = p.fPubID)
 WHERE `p.fPubID` = 12
 ORDER BY `a.fAuthorName` ASC;  

可能更容易进行连接。Authors表通过author id连接到Books表,Books表通过publisher id连接到publisher表。一旦它们全部连接起来,您就可以通过pub id进行筛选和排序

 SELECT `a.fAuthorName`, `a.fAuthorID`
 FROM `tAuthors` a
 JOIN `tBooks` b ON (a.fAuthorID = b.fAuthorID )
 JOIN `tPublishers` p ON (b.fPubID = p.fPubID)
 WHERE `p.fPubID` = 12
 ORDER BY `a.fAuthorName` ASC;  

您可以使用tBooks而不是TPublisher执行以下查询:

 SELECT `fAuthorName`, `fAuthorID`
 FROM `tAuthors`
 WHERE `fAuthorID` IN (
     SELECT `fAuthorID`
     FROM `tBooks`
     WHERE `fPubID` = 12
 )
 ORDER BY `fAuthorName` ASC; 

您可以使用tBooks而不是TPublisher执行以下查询:

 SELECT `fAuthorName`, `fAuthorID`
 FROM `tAuthors`
 WHERE `fAuthorID` IN (
     SELECT `fAuthorID`
     FROM `tBooks`
     WHERE `fPubID` = 12
 )
 ORDER BY `fAuthorName` ASC; 

看起来很好,唯一的问题是我们现在还没有到使用“加入”的地步,只是“在哪里”。看起来很好,唯一的问题是我们现在还没有到使用“加入”的地步,只是“在哪里”。