mysql порядок по первому полю и после по второму полю - PullRequest
1 голос
/ 25 апреля 2020

У меня есть такой запрос

select YEARWEEK(v.dataorainizio,1) yw,pdv.nome ,pdv.localita
from visita v
join pdv on pdv.id=v.idpdv
order by yw DESC

результат

"yw"    |                               "nome"|"localita"

"202011"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202011"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202011"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202011"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202010"|"( PDV CHIUSO ) Media World Genova Ex Saturn"|"Genova"
"202010"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202009"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202009"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202008"|"Media World Asti"|"Asti"
"202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202007"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202007"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202007"|"Media World Bergamo 2 - Orio"|"Orio Al Serio"
"202007"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202007"|"Media World Asti"|"Asti"
"202006"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
"202006"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"

Я хотел бы заказать для yw DES C, но с подмножеством "nome" в порядке как это

    "202011"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202011"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202011"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202011"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"       
    "202010"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202009"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202009"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"      
    "202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202008"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202007"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202007"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202007"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"      
    "202006"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202006"|"( PDV CHIUSO ) Media World Brescia 2"|"Brescia"
    "202010"|"( PDV CHIUSO ) Media World Genova Ex Saturn"|"Genova"
    "202008"|"Media World Asti"|"Asti"
    "202007"|"Media World Asti"|"Asti"
    "202007"|"Media World Bergamo 2 - Orio"|"Orio Al Serio"

Версия БД MariaDB 10.4

это возможно без хранимой процедуры и без результата после обработки в php?

1 Ответ

1 голос
/ 25 апреля 2020

Это то, что вы хотите?

order by nome desc, yw desc

Если вы хотите сначала поставить nome с наибольшим количеством yw, то, предполагая MySQL 8.0, вы можете использовать оконные функции:

order by
    max(yearweek(v.dataorainizio,1)) over(partition by pdv.nome) desc,
    yearweek(v.dataorainizio,1) desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...