2014-03-02 60 views
0

我有5臺是那些:選擇要求選擇5桌

my_books表:

  • id_book
  • 標題
  • 價格
  • 描述

genre表:

  • id_genre
  • 類型(在此列類型描述)

genre_ind表:

  • id_book
  • id_genre(表結合體裁和書籍表)

authors表:

  • id_author
  • 作者(在本專欄作者姓名)

author_ind表:

  • id_book
  • id_author

我需要連接表來按流派ID選擇所有圖書信息。由於存儲在其他表上的作者信息需要根據書籍ID添加作者信息。

嘗試這樣做,在一個單一的查詢,到目前爲止,我有以下查詢:

SELECT my_books.id_book, 
      my_books.title, 
      my_books.price, 
      my_books.descrip, 
      a.genre, 
      s.authors 
    FROM my_books 
LEFT JOIN genre_ind 
     ON my_books.id_book = genre_ind.id_book 
LEFT JOIN genre a 
     ON genre_ind.id_genre = a.id_genre 
LEFT JOIN author_ind 
     ON books.id_book=author_ind.id_book 
LEFT JOIN authors s 
     ON author_ind.id_author=s.id_author 
    WHERE author_ind.id_book=my_books.id_book 
     AND genre_ind.id_genre=%d 

我擁有實用的查詢,如果我需要根據類型ID從my_books信息選擇信息,但後來我嘗試擴展它來選擇作者信息,它不起作用!

更新:

現在代碼一刀看起來是這樣的:

SELECT my_books.id_book, 
      my_books.title, 
      my_books.price, 
      my_books.descrip, 
      a.genre, 
      s.authors 
     FROM my_books 
LEFT JOIN genre_ind 
     ON my_books.id_book = genre_ind.id_book 
LEFT JOIN genre a 
     ON genre_ind.id_genre = a.id_genre 
LEFT JOIN author_ind 
     ON my_books.id_book = author_ind.id_book 
LEFT JOIN authors s 
     ON author_ind.id_author = s.id_author 
    WHERE genre_ind.id_genre=%d 

,我得到的錯誤是:MySQL的:#1054 - 在 '字段列表'

未知列 's.authors'

謝謝你的幫助,真的很感謝

好了,問題解決了。非常感謝你的時間和幫助!

正確一刀:

SELECT my_books.id_book, 
      my_books.title, 
      my_books.price, 
      my_books.descrip, 
      a.genre, 
      s.author 
     FROM my_books 
LEFT JOIN genre_ind 
     ON my_books.id_book = genre_ind.id_book 
LEFT JOIN genre a 
     ON genre_ind.id_genre = a.id_genre 
LEFT JOIN author_ind 
     ON my_books.id_book = author_ind.id_book 
LEFT JOIN authors s 
     ON author_ind.id_author = s.id_author 
    WHERE genre_ind.id_genre=%d 
+0

怎麼不工作?你能否提供關於錯誤的更多細節? –

+0

警告:mysql_num_rows():提供的參數不是有效的MySQL結果資源 –

+0

你能嘗試刪除where子句並檢查它的工作嗎? – DevelopmentIsMyPassion

回答

0

的第一個問題是這樣的on條款:

ON books.id_book=author_ind.id_book 

稱爲books什麼都還沒有確定。

第二個問題是where子句正在取消left outer join的影響。

也許你的意思是這樣的:

FROM my_books LEFT JOIN 
     genre_ind 
     ON my_books.id_book = genre_ind.id_book LEFT JOIN 
     genre a 
     ON genre_ind.id_genre = a.id_genre LEFT JOIN 
     author_ind 
     ON my_books.id_book = author_ind.id_book LEFT JOIN 
---------^ changed from `books` 
     authors s 
     ON author_ind.id_author=s.id_author 
WHERE genre_ind.id_genre=%d 
+0

ops,我確實想念books.id_book :)謝謝,改成my_book.id_book 錯誤依然存在。你能否指定我是否改變WHERE語句如何告訴quire在author_ind中選擇authors id與id_books比較? –

+0

更新後出現以下錯誤: #1054 - '字段列表'中的未知列's.authors' –

+0

@metamorph_online:您的列名是'author',但您使用'authors'。糾正它 –