私は3つのデータベースを持っています。詳細は次のとおりです。
books_db データベースのすべての列と各本のジャンルを同時に印刷したいと考えています。
本は複数のジャンルに分類される可能性があるため、各ジャンルに固有の ID を割り当てました。
Genre_ID 1 - スリラー、Genre_ID 2 - アドベンチャーなど。
--- books_db -----------
ID (int AI)
Book_title (varchar)
Author (varchar)
--- genre_link_db ------
ID_Books (int)
Genre_ID (int)
--- genre_db -----------
Genre_ID (int)
Genre (varchar)
ここまでで、この SQL ステートメントをコーディングすることができました。それは機能しますが、グループ concat() がすべてのジャンルを連結し、次の検索結果の新しい行を出力しないため、最初の検索結果に対してのみ機能します。
以下の例では、すべての結果を表示するはずの '%' のように試してみると、ジャンルが正しく印刷された 1 つの結果のみが表示されます。
SELECT *, group_concat(T2.Genre separator ', ') AS GENRE_RESULT
FROM (SELECT * FROM books_db WHERE Book_title like '%') AS T1
JOIN (SELECT ID_Books, Genre from genre_link_db INNER JOIN genre_db ON genre_link_db.Genre_ID = genre_db.Genre_ID ) AS T2
ON T1.ID = T2.ID_Books;