2017-01-04 6 views
0

私は2つのテーブルを持っています。 1つは本の表です。 2つの列があります。 id|title。もう一つはstudent_booksテーブルです。それは2つの列student_id|book_idを持っています。ある生徒が本を読もうとすると、student_idテーブルとbook_idが一致するかどうかを確認します。学生は複数の書籍を購入できるので、student_booksテーブルに複数のエントリがある可能性があります。今では、人気度に基づいて書籍のリストを表示したいのですが(これはstudent_booksテーブルに最大のエントリがあります)、ページに表示します。 SQLクエリをどのように書くべきですか?mysql:別のテーブルのデータを使ってテーブルをソートする

+0

のカウントによってstudent_booksと注文して図書テーブルに参加することができますか?クエリの意図した出力は?人気のある書籍のタイトルだけ?または実際のカウント? –

答えて

0
SELECT b.id, b.title 
    FROM books b 
    LEFT JOIN students s ON s.book_id = b.id 
GROUP BY b.id, b.title 
ORDER BY COUNT(s.book_id) DESC; 
+0

'title'を選択していますが、この列は集約ではなく、' GROUP BY'にも表示されません。 –

+0

@TimBiegeleisen MySQLでは問題ありません。 – shmosel

+0

はい、MySQLでは問題であり、クエリは特定のバージョンでは実行されません。 –

1

あなたはあなたが欲しいデータを取得するために書くことを試みたクエリを提供することができますあなたは、各書籍

select b.* 
from books b 
left outer join student_books s 
on b.id = s.book_id 
group by b.id, b.title 
order by count(s.student_id) desc; 
関連する問題