Próbuję zamówić za pomocą pola i zamówić przez przypadek, gdy niż oświadczenie. Jeśli przypadek jest NS, data powinna ASC, a czas powinien być ASC, jeśli sprawa jest PP, data powinna być ASC, a czas powinien ASC, jeśli sprawa jest wykonywana, data powinna DESC, a czas powinien być w stanie,

NS nie jest uruchomiony, PP jest odłożony, wykonany jest wykonany,

Mój kod:

select * from matches
where tournament_id = 12
order by FIELD(matches.status_key, 'ns', 'done', 'pp'),
CASE WHEN matches.status_key = 'ns' THEN ('matches.date ASC, matches.time ASC') END,
CASE WHEN matches.status_key = 'pp' THEN ('matches.date ASC, matches.time ASC') END,
CASE WHEN matches.status_key = 'done' THEN ('matches.date DESC, matches.time ASC') END;

Domyślam się, że jest to złe podejście, potrzebuję wskazówek, porad i pomóc rozwiązać problem.

Dziękuję Ci

0
Sitny 24 lipiec 2020, 16:21

1 odpowiedź

Najlepsza odpowiedź

Myślę, że to powinno to zrobić:

order by 
    field(status_key, 'ns', 'done', 'pp'),
    case when status_key in ('ns', 'pp') then date,
    case when status_key = 'done'        then date desc,
    time
1
GMB 24 lipiec 2020, 13:28