PHP и MySQL порядок по очкам кармы - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть таблица MySQL с именем "posts" со столбцами "karma" и "date".

Я хочу напечатать информацию внутри этой таблицы в следующем порядке: сначала самые последние сообщения, но в первую очередь, эти последние посты, те, которые имеют более высокие очки кармы.

Если я упорядочу по date DESC, а затем по karma DESC, таблица принесет мне сначала все эти последние посты, а затем упорядочит по карме, но не обязательно принесет мне первые более важные посты дня, потому что приказ состоит в том, чтобы печатать первые самые последние посты (упорядоченные по дате des c).

Но если вместо этого я закажу свой сообщения karma DESC, а затем date DESC, файл PHP сначала напечатает мне все эти сообщения с наивысшими очками кармы, а затем упорядочит по дате все сообщения с меньшим количеством очков кармы.

Может Подскажите, пожалуйста, как мне сначала распечатать все последние сообщения с наивысшей кармой?

В резюме мне нужно напечатать первые самые сообщения с наивысшей кармой.

Вот пример данные :

|------------|-------------|
| ID | KARMA |    DATE     |
|------------|-------------|
| 9  |  23   | November 23 |
|------------|-------------|
| 8  |  13   | November 23 |
|------------|-------------|
| 7  |  19   | November 23 |
|------------|-------------|
| 6  |  33   | November 22 |
|------------|-------------|
| 5  |  2    | November 22 |
|------------|-------------|
| 4  |  9    | November 21 |
|------------|-------------|

Таким образом, сообщение должно быть напечатано на экране в следующем порядке:

  • Первые лучшие посты 23 ноября: 9, 7, 8
  • Тогда лучшие посты 22 ноября: 6, 5
  • Тогда лучшие посты 21 ноября: 4
  • и продолжаем ....

I я уже пробовал с:

ORDER BY posts.date DESC, posts.karma DESC

Но это, очевидно, приводит к тому, что сначала показываются самые последние сообщения, а затем сообщения с более высоким значением кармы.

Ответы [ 2 ]

3 голосов
/ 10 апреля 2020
SELECT * FROM `posts` ORDER BY DATE(`date`) DESC, `karma` DESC

Этот запрос будет располагать по приоритетам поле date, а затем поле karma в порядке. Итак, вывод будет: 9, 7, 8, 6, 5, 4

0 голосов
/ 10 апреля 2020
    **Schema (MySQL v5.7)**

        Create table testT (
         ID int, 
         karma varchar(255),
         table_date date 
        );
        INSERT INTO testT (ID, karma, table_date) 
VALUES ("9","23","2020.11.23"),
("8","13","2020.11.23"),
("7","19","2020.11.23"),
("6","33","2020.11.22"),
("5","2","2020.11.22"),
("4","9","2020.11.21");



    ---

    **Query #1**

        Select * FROM testT ORDER BY table_date DESC, karma DESC;

    | ID  | karma | table_date |
    | --- | ----- | ---------- |
    | 9   | 23    | 2020-11-23 |
    | 7   | 19    | 2020-11-23 |
    | 8   | 13    | 2020-11-23 |
    | 6   | 33    | 2020-11-22 |
    | 5   | 2     | 2020-11-22 |
    | 4   | 9     | 2020-11-21 |

    ---

Просмотр на БД Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...