сортировать проданные таблицы по наиболее часто встречаемым product_id - PullRequest
2 голосов
/ 01 января 2012

привет, у меня есть проданная таблица в моей базе данных, моя таблица выглядит так:

+-----------+---------------------+---------+---------+ 
| id        | product_id          | user_id | date    |
+-----------+---------------------+---------+---------+
|         1 | 20                  |      2  |392185767| 
+-----------+---------------------+---------+---------+
|         2 | 28                  |      3  |392333337| 
+-----------+---------------------+---------+---------+

Я хочу отсортировать вывод таблицы по большинству приобретенных продуктов, например:

$sql = "select * from sold order by most_repeated(product_id)";

Я не хочу группировать результаты по идентификатору продукта, я просто хочу отсортировать их, чтобы наиболее повторяющиеся продукты отображались в верхней части результата

Ответы [ 3 ]

2 голосов
/ 01 января 2012

Поскольку вы не хотите группировать, вы можете использовать коррелированный запрос:

select * from sold s
order by (select COUNT(1) from sold ss where ss.product_id=s.product_id)

Я не пробовал это в MySQL, но он должен работать.

0 голосов
/ 01 января 2012

Этот запрос должен дать вам то, что вы хотите, не считая один и тот же продукт несколько раз.

    select s.* 
       from sold s join
        (select count(product_id) as times_purchased, product_id
           from sold
          group by product_id)   most_repeated on s.product_id = most_repeated.product_id
   order by most_repeated.times_purchased

Удачи!

0 голосов
/ 01 января 2012

Вы не можете найти повторяющиеся продукты, не считая их.

SELECT product_id, COUNT(product_id) AS product_count
FROM sold
GROUP BY product_id
ORDER BY product_count DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...