Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在mysql中获得有序结果_Php_Mysql - Fatal编程技术网

Php 如何在mysql中获得有序结果

Php 如何在mysql中获得有序结果,php,mysql,Php,Mysql,我有一个名为library的数据库。 有作者,有书,有书,有流派,有流派,有历史 我有5本以上以“恐怖”命名的书,3本以“喜剧”命名的书,2本以“浪漫”命名的书 我有一个复选框,上面有我所有的类型,当我选择它们时,我希望结果按类型分组,大多数记录在顶部。 下面是一些代码: "SELECT title, price, genre_id, name FROM books INNER JOIN books_genres ON books.id = books_genres.book_id INNER

我有一个名为library的数据库。 有作者,有书,有书,有流派,有流派,有历史

我有5本以上以“恐怖”命名的书,3本以“喜剧”命名的书,2本以“浪漫”命名的书


我有一个复选框,上面有我所有的类型,当我选择它们时,我希望结果按类型分组,大多数记录在顶部。 下面是一些代码:

"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是带有类型ID的字符串,如1,2,3,4,用于:

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;"

使用子查询和ORDERBY子句

例如:

"SELECT title, price, genre_id, name, (SELECT count(*) FROM books AS bks WHERE bks.genre_id = books.genre_id) AS genre_count
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 genre_count DESC"

请参见此处的答案:如果希望顺序是升序而不是降序,则通过此选项我可以得到结果,但不是按所需顺序替换
id
为要按顺序排序的列的名称和
DESC
by
ASC
。你想要的顺序是什么?我希望结果按流派分组,大多数记录都在最上面。所以id或类型id不起作用。您必须更改您的查询,一秒钟后在答案中添加查询。试试看。#1054-where子句中的未知列“bks.genre_id”
"SELECT title, price, genre_id, name, (SELECT count(*) FROM books AS bks WHERE bks.genre_id = books.genre_id) AS genre_count
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 genre_count DESC"