2017-08-06 66 views
0

我是新来的,所以我知道我错过了一些简单的东西,但是我弄不明白。我试图将3个表连在一起,并且我已经使用了2个连接,但是当在同一个查询中组合时,最终会出现错误。连接3个表时出错php/sql

我的3个表是:

TBL_Authors

Author_ID 
Author_Name 

TBL_Publishers

Publisher_ID 
Publisher_Name 

TBL_Books

Title 
Author_ID 
Publisher_ID 
ISBN 
Genre 
Price 
Cost 
Rating 

我有什么不工作:

$query = 'SELECT * FROM TBL_PUBLISHERS 
       JOIN TBL_BOOKS ON TBL_PUBLISHERS.Publisher_ID = TBL_BOOKS.Publisher_ID 

       SELECT * FROM TBL_AUTHORS 
       JOIN TBL_BOOKS ON TBL_AUTHORS.Author_ID = TBL_BOOKS.Author_ID 

       ORDER BY TBL_BOOKS.Title ASC;'; 
+1

这些是两个查询 – GurV

回答

0

此查询假设每本书都已发布。

SELECT 
    * 
FROM 
    TBL_Books b 
    INNER JOIN TBL_Publishers p ON b.Publisher_ID = p.Publisher_ID 
    INNER JOIN TBL_Authors a ON b.Author_ID = a.Author_ID 
ORDER BY 
    b.Title 

本书将始终有作者,但不一定是发布者,如果它没有发布。如果您需要获取所有图书,无论是否已发布,您都必须将INNER加入TBL_Publishers更改为LEFT

+0

我不会质疑它,因为它最终奏效,我无法弄清楚我的拼写错误在哪里。我已经尝试过你曾经做过的一点,但没有奏效。我刚刚复制了你的代码,它不起作用。然后我再次拼凑起来,它工作。最终它的工作原理和我所能想到的是我有一个我一直想念的地方。谢谢! – amblin

0

此查询将显示书籍,出版商名称,作者姓名的所有详细信息的结果。

SELECT 
t1.* , t2.Publisher_Name , t3.Author_Name 
FROM 
TBL_Books as t1 
INNER JOIN TBL_Publishers as t2 ON t1.Publisher_ID = t2.Publisher_ID 
INNER JOIN TBL_Authors as t3 ON t1.Author_ID = t2.Author_ID 
ORDER BY 
t1.Title 

如果此查询可帮助您,请选中此项并更新。