3a) Vad heter tätorterna som finns i Pajala kommun?
Några alternativa lösningar:
SELECT "Tätorter".namn FROM "Tätorter", Kommuner WHERE "Tätorter".kommun = Kommuner.kod and Kommuner.namn = 'Pajala kommun'; SELECT namn FROM "Tätorter" WHERE kommun IN (SELECT kod FROM Kommuner WHERE namn = 'Pajala kommun'); SELECT "Tätorter".namn FROM "Tätorter" JOIN Kommuner ON "Tätorter".kommun = Kommuner.kod WHERE Kommuner.namn = 'Pajala kommun';
3b) Det finns en tätort som heter Flurkmark. Vad heter kommunen som den ligger i?
Några alternativa lösningar:
SELECT Kommuner.namn FROM "Tätorter", Kommuner WHERE "Tätorter".namn = 'Flurkmark' AND "Tätorter".kommun = Kommuner.kod; SELECT namn FROM Kommuner WHERE kod IN (SELECT kommun FROM "Tätorter" WHERE namn = 'Flurkmark'); SELECT Kommuner.namn FROM "Tätorter" JOIN Kommuner ON "Tätorter".kommun = Kommuner.kod WHERE "Tätorter".namn = 'Flurkmark';
3c) Vad heter länet som Flurkmark ligger i?
Några alternativa lösningar:
SELECT "Län".namn FROM "Tätorter", Kommuner, "Län" WHERE "Tätorter".namn = 'Flurkmark' AND "Tätorter".kommun = Kommuner.kod AND Kommuner."län" = "Län".kod; SELECT namn FROM "Län" WHERE kod IN (SELECT "län" FROM Kommuner WHERE kod IN (SELECT kommun FROM "Tätorter" WHERE namn = 'Flurkmark')); SELECT "Län".namn FROM "Tätorter" JOIN Kommuner ON "Tätorter".kommun = Kommuner.kod JOIN "Län" ON Kommuner."län" = "Län".kod WHERE "Tätorter".namn = 'Flurkmark';
3d) Vilka tätorter ligger i kommuner som har mindre än 3000 invånare?
SELECT "Tätorter".namn FROM "Tätorter", Kommuner WHERE "Tätorter".kommun = Kommuner.kod AND Kommuner."folkmängd" < 3000;
(Ja, det finns fortfarande flera alternativa sätt att skriva SQL-frågan, men nu orkar jag bara skriva ett.)
3e) Vilka län innehåller minst en tätort som har mer än 100000 invånare?
SELECT "Län".namn FROM "Län", Kommuner, "Tätorter" WHERE "Län".kod = Kommuner."län" AND Kommuner.kod = "Tätorter".kommun AND "Tätorter"."folkmängd" > 100000;
3f) Vilka tätorter med mer än 1000 invånare ligger i kommuner som har mindre än 3000 invånare?
SELECT "Tätorter".namn FROM "Tätorter", Kommuner WHERE "Tätorter".kommun = Kommuner.kod AND "Tätorter"."folkmängd" > 1000 AND Kommuner."folkmängd" < 3000;
3g) Vilka tätorter i Västerbottens län har mer än 1000 invånare och ligger i kommuner som har mindre än 4000 invånare?
SELECT "Tätorter".namn FROM "Tätorter", Kommuner, "Län" WHERE "Tätorter".kommun = Kommuner.kod AND Kommuner."län" = "Län".kod AND "Tätorter"."folkmängd" > 1000 AND Kommuner."folkmängd" < 4000 AND "Län".namn = 'Västerbottens län';
3h) Vad heter residensstaden i Kalmar län, och hur många personer bor det i den?
SELECT "Tätorter".namn, "Tätorter"."folkmängd" FROM "Tätorter", "Län" WHERE "Tätorter".kod = "Län".residensstad AND "Län".namn = 'Kalmar län';
3i) I vilket län är Karlstad residensstad?
SELECT "Län".namn FROM "Tätorter", "Län" WHERE "Tätorter".kod = "Län".residensstad AND "Tätorter".namn = 'Karlstad';
3j) Det finns en tätort som heter Löwenströmska lasarettet. Vad heter kommunen och länet som den ligger i?
SELECT Kommuner.namn, "Län".namn FROM "Tätorter", Kommuner, "Län" WHERE "Tätorter".namn = 'Löwenströmska lasarettet' AND "Tätorter".kommun = Kommuner.kod AND Kommuner."län" = "Län".kod;
3k) Finns det några kommuner som inte innehåller några tätorter? Vad heter de? (Kan det verkligen finnas kommuner utan tätorter? Vad skulle det kunna bero på?)
En alternativ lösning:SELECT namn FROM Kommuner WHERE kod NOT IN (SELECT KOMMUN FROM "Tätorter");
SELECT Kommuner.namn FROM Kommuner LEFT OUTER JOIN "Tätorter" ON "Tätorter".Kommun = Kommuner.kod WHERE "Tätorter".kod IS NULL;
Ja, det finns kommuner utan tätorter i Sverige. Man skulle kanske gissa att det handlar om någon sorts ödemark i Norrland, men det visar sig att det bland annat gäller Sundbybergs kommun. Den som varit i Sundbyberg vet att den inte alls består av ödemark. Men tätorten Sundbyberg har växt ihop med tätorten Stockholm, som täcker hela Stockholms, Solna och Sundbybergs kommuner, samt delar av ytterligare åtta kommuner. I databasen står varje tätort bara med en gång, med hela sin befolkning, och då i den kommun där den huvudsakligen ligger, i det här fallet Stockholms kommun.
En viktig lärdom: Världen är ibland mer komplicerad än vad den ser ut att vara i ett databasschema!