Vinnaren i pepparkakshustävlingen!
2008-04-09, 20:40
  #1
Medlem
Om man tänker sig mitt vanliga exempel med länder > stater[har land_id] > städer [har stat_id]. Om man vill räkna antalet stater i ett visst land så är det ganska enkelt. När man också vill räkna antalet stader i varje land blir det svårare.

Är det möjligt med en query eller måste man köra flera? Hur kan man lättast lösa detta?
Citera
2008-04-09, 20:51
  #2
Medlem
Kod:
SELECT COUNT(*) FROM stader JOIN stater ON stader.stat_id = stater.id WHERE stater.land_id = 42

Förutsätter att du bara har en rad för varje stat i stater, men det är väl ganska troligt att du har.
Citera
2008-04-09, 21:14
  #3
Medlem
Det där funkar, men det blir lite mer komplicerat om man ska räkna både stater och städer.

Alltså, jag vill ha ut namn och id ur lander-tabellen, antalet stater i det landet och antalet städer i staterna i det landet.
Citera
2008-04-10, 10:38
  #4
Medlem
googlevistas avatar
Kod:
SELECT Länder.LandID, Länder.Land, COUNT(DISTINCT Stater.StatID) as [Antal stater], COUNT(Städer.StadID) as [Antal städer]
FROM Länder
INNER JOIN Stater ON Länder.LandID = Stater.LandID
INNER JOIN Städer ON Städer.StatID = Stater.StatID
GROUP BY Länder.LandID, Länder.Land
ORDER BY Länder.LandID
Citera
2008-04-10, 19:52
  #5
Medlem
Där har vi det! Distinct var ett nytt begrepp för mig.

Tack så mycket.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback