Jar har en SQL fråga:
SELECT *
FROM karta
WHERE (forsamlingskod IS NULL)
ORDER BY lankod, CASE WHEN kommunkod IS NOT NULL THEN 1 ELSE 0 END, Namn
Funkar nästan bra...
Denna sorterar efter kommuner i bokstavsårdning efter länen men jag vill ha länen i bokstavsårdning med.
just nu är de sorterade i lankod.
Man vet att det är ett län p.g att kommunkod är null. kommunkod innehåller värde på både lankod och kommunkod.
SELECT
lankod,
lan.namn AS LanNamn,
kommunkod,
namn AS KommunNamn
FROM
karta
inner join
karta lan
ON
lan.lankod = karta.lankod
and
karta.kommunkod IS NULL
WHERE
forsamlingskod IS NULL
ORDER BY
LanNamn,
CASE WHEN kommunkod IS NOT NULL THEN 1 ELSE 0 END,
KommunNamn
SELECT
lan.lankod,
lan.namn AS LanNamn,
karta.kommunkod,
karta.namn AS KommunNamn
FROM
karta
LEFT OUTER JOIN
karta lan
ON
lan.lankod = karta.lankod
and
lan.kommunkod IS NULL
WHERE
karta.kommunkod IS NOT NULL
UNION
SELECT
karta.lankod,
karta.namn,
null,
null
FROM
karta
WHERE
karta.kommunkod IS NULL
ORDER BY
LanNamn,
KommunNamn
Det funkar ju men blir det inte onödligt mycket information och segt?
Skall vara så optimalt som möjligt.
Annars så kan jag sätta 2 loppar i varandra för att loppa ut det på sidan som jag gjorde från början.
Hur gör man denna till en view i databasen?
För det är la det bästa sättet för prestanda om det inte skall ändras något i databasen och uthämtningen?
får fel på ORDER BY och Union mär jag skall spara...
Du tjänar ingen prestanda på att skapa en vy av det. I en vy kan man inte ange ORDER BY. Det får man göra när man gör en select utifrån vyn. Jag skulle skapat en SP för det.
CREATE PROCEDURE proc_getLanKommunOrdered
AS
SELECT ........
GO
257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e