-1

ライブラリという名前のデータベースがあります。著者、本、books_genres、ジャンル、歴史があります

「ホラー」という名前のジャンルの本が 5 冊、「コメディ」という名前のジャンルの本が 3 冊、「ロマンス」という名前のジャンルの本が 2 冊あります。

すべてのジャンルのチェック ボックスがあり、それらを選択すると、結果がジャンル別にグループ化され、ほとんどのレコードが TOP に表示されます。ここにいくつかのコードがあります:

"SELECT title, price, genre_id, name
FROM books
INNER JOIN books_genres ON books.id = books_genres.book_id
INNER JOIN genres ON books_genres.genre_id = genres.id
WHERE genre_id IN ({$ids})";

これはすべての本を私に返しますが、私が望む順序はありません。

ID は 1,2,3,4 のようなジャンル ID の文字列です

4

2 に答える 2

3

次のように MYSQLORDER BYを使用します。

SELECT ... FROM .... WHERE ... ORDER BY id DESC

DESCは降順用 /ASCは昇順用

編集:これを試してください:

"SELECT title, price, genre_id, name, (SELECT COUNT(*) FROM books_genres as b WHERE b.genre_id = genres.id) as genreCount
FROM books
INNER JOIN books_genres ON books.id = books_genres.book_id
INNER JOIN genres ON books_genres.genre_id = genres.id
WHERE genre_id IN ({$ids})
ORDER BY genreCount DESC, genres.id ASC;"
于 2013-06-26T22:04:02.217 に答える