2016-01-13 88 views
0

我在我的數據庫中有一個名爲book_collection, 的表,它具有列:publisherID,title,familyID,bookID 和另一個名爲book_authors的表,其中有bookID和authorID列。如何對連接表執行查詢?

我想一起加入表格,然後找到所有具有相同publisherID和標題的「books」 。

所以我最初開始:

SELECT book_collection.publisherId, book_collection.title,
book_authors.authorId FROM book_collection INNER JOIN book_authors ON book_collection.bookId = book_authors.bookId

這將連接表,但我有現在的問題是 我怎麼能執行任何其他查詢該表。 如果我複製此代碼並將其粘貼在每個SELECT * FROM ...之後,它會給 一個錯誤,提示「每個派生表都需要一個別名」?

我不是最好的SQL,所以請與我輕輕一點。 任何幫助將不勝感激!

+1

'選擇*(...您的查詢這裏...)AS alias',是你所需要的,正是因爲錯誤消息說。 –

+0

[每個派生表必須有自己的別名]的可能重複(http://stackoverflow.com/questions/1888779/every-derived-table-must-have-its-own-alias) – Evgeny

回答

0
SELECT collection.* ,authors.* 
    ,book_authors.authorId 
    FROM book_collection as collection 
    INNER JOIN book_authors as authors 
    ON book_collection.bookId = book_authors.bookId 

使用此查詢,您可以獲取兩個表中的所有列。如果你想有更好的表現,你可以有更多的過濾器內加入或在where子句

1

Every derived table needs an alias

在此錯誤意味着你需要在列使用表的別名與SELECT語句

如何使用別名:

您可以使用表名作爲別名,如果你不希望使用自定義的別名。

例子:

SELECT collection.* ,authors.* ,book_authors.* FROM .... 

其他解決方案:

您還可以使用自定義的定義別名,例如:

SELECT c.* ,a.* , b.*  FROM collection c INNER JOIN authors a ON a.columnid = c.columnid .... 

基本原因的錯誤:

這個錯誤的原因是因爲你在不同的表中有相同的列名和MYSQL不知道哪個列是哪個表的引用。在這類查詢中使用別名總是有幫助的。

旁註:

我建議你使用易寫多次自定義別名。基本上創建別名是爲了使列名更具可讀性。

更多的基本信息SQL ALIASES

相關問題