02. november 2022 - 20:32Der er
7 kommentarer og 1 løsning
Order by med subid
Hej
Hvis jeg har en tabel TABEL1 id subId navn dato
og nogle poster i den 1 NULL Top niveau 1 2022-05-01 2 NULL Top niveau 2 2022-05-14 3 1 Sub niveau til ID 1 2022-05-05 4 1 Og sub niveau til ID 1 2022-05-04 5 2 Sub niveau til ID 2 2022-05-15
Nu vil jeg gerne lave en SQL som henter alle, og som sorterer på dato, dog med dem der har subId under dem de hører til
Dvs output bliver i denne rækkefølge 1: 1 Top niveau 1 2: 3 Sub niveau til ID 1 3: 4 Og sub niveau til ID 1 4: 2 Top niveau 2 5: 5 Sub niveau til ID 2
Hvordan kan det så gøres smartest og mest optimalt ift. hastighed/serverforbrug med en SQL?
SELECT t1a.id,t1a.navn,t1a.dato FROM tabel1 t1a LEFT JOIN tabel1 t1b ON t1a.subid = t1b.id -- t1a = row, t1b = parent row ORDER BY COALESCE(t1b.dato,t1a.dato), -- order by parent row to order parent rows COALESCE(t1b.id,t1a.id), -- order by parent row id to split multiple paraent rows with same dato t1a.dato; -- order by row dato to order rows below parent row
Arne_v: Denne løsning ser ud til at virke uanset hvilke forhold, rækkefølge osv. det ligger i, så længe sub har en senere dato end den anden
Tak for hjælpen :)
Hvis man vil have dem sorteret DESC ser det ud til det er sådan ik SELECT t1a.id,t1a.navn,t1a.dato FROM tabel1 t1a LEFT JOIN tabel1 t1b ON t1a.subid = t1b.id -- t1a = row, t1b = parent row ORDER BY COALESCE(t1b.dato,t1a.dato) DESC, COALESCE(t1b.id,t1a.id) DESC, t1a.dato;
(det er et lidt langt læs, men det er grundliggende et træ venligt API ovenpå database)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.