2016-04-08 56 views
-1

我有一個嚴重的問題,創建以下適當的查詢: - 我有3個表。如何創建這個非常複雜的mysql查詢

  1. 作者(AUTHOR_ID(INT),AUTHOR_NAME(VARCHAR)),

  2. (book_id(INT),BOOK_TITLE(VARCHAR))

  3. 貢獻( book_id(int),author_id(int),prec(double)) - 用於存儲作者參與創作特定書籍的深度。 (這樣一本書可能有一個以上的作者)

和傳奇難度(我現在)查詢有索要book_id,BOOK_TITLE和第三列與串接指定本書的所有作者的數據庫逗號和命令由參與的perecentage。因此,查詢結果中的行數與書籍表中的許多書籍一樣多,我必須在每本書中獲得標題,並在第三列中添加作者。但如何可以這樣的MySQL查詢僞造?感謝你們對我的幫助!

(我甲肝SQL語言,基本功能,關鍵字的基礎知識,但我無法僞造正確的查詢)

+2

嘗試更好地設置文本的格式。還要添加樣本表數據和預期結果,以及您當前的查詢嘗試。 – jarlh

+0

[Group_Concat()](http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat)可讓您根據對結果進行分組和排序將多行合併爲一行通過某些...百分比也許是爲了您的查詢。 – xQbert

回答

0

有點含糊3號表(名稱)和連接標準,但是這應該是關閉...

這裏的關鍵是函數group_Concat(),它允許您根據值將多個行組合爲一個。此外,group_Concat功能允許您定義一個定界符以及一個定單。

SELECT B.Book_ID 
    , B.Book_Title 
    , group_concat(A.Author_name order by ABP.Prec Desc separator ', ') as Authors 
FROM Author_Book_Percent ABP 
INNER JOIN AUTHORS A 
    on ABP.Author_ID = A.Author_ID 
INNER JOIN BOOKS B 
    on ABP.Book_ID = B.Book_ID 
GROUP BY B.Book_ID, B.Book_Title 
+0

不可能簡單..對我來說,我應該做到了! :)禰爲您的好意! – mahtantiwele

+0

容易,但只有當你知道Group_Concat()函數! – xQbert

+0

我知道這個功能,但只是一般...我不知道我可以使用這樣的順序。你再一次! – mahtantiwele