webForumDet fria alternativet

Svår count?

5 svar · 605 visningar · startad av saw

sawMedlem sedan mars 20011 883 inlägg
#1

Jag ville räkna förekommsten av avikelsrapporter per kvarter, men som vanligt,
fasnar jag.

SELECT
Count( t_Avikelserapport.rapport) AS Antal,
 t_Avikelserapport.rapport, t_kvarter.kvarterId
FROM
 t_kvarter
 RIGHT JOIN (t_gata
 INNER JOIN (t_Avikelserapport
 INNER JOIN t_Avikelse
 ON t_Avikelserapport.rapId = t_Avikelse.rapId)
 ON t_gata.gatId = t_Avikelse.gatId) 
ON t_kvarter.kvarterId = t_gata.kvarterId
WHERE 
(((t_kvarter.kvarterId)=2))
GROUP BY  
t_Avikelserapport.rapport;

Felmedelande:
Du försöker köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket "kvarterId"
Lägger jag till kvarterId så räknars de bara som en och en, jag skulle vilja veta
det totala antalet rapporter per kvarter. :l

sawMedlem sedan mars 20011 883 inlägg
#2

Kan detta vara korrekt?

SELECT 
Count(t_Avikelserapport.rapId) AS Antal, t_kvarter.kvarterId
FROM 
t_kvarter RIGHT JOIN (t_gata 
INNER JOIN (t_Avikelserapport 
INNER JOIN t_Avikelse 
ON t_Avikelserapport.rapId = t_Avikelse.rapId) 
ON t_gata.gatId = t_Avikelse.gatId) 
ON t_kvarter.kvarterId = t_gata.kvarterId
WHERE 
(((t_kvarter.kvarterId)=1))
GROUP BY 
t_kvarter.kvarterId;
LarsGMedlem sedan dec. 200012 465 inlägg
#3

Varför har du right join?

sawMedlem sedan mars 20011 883 inlägg
#4

Är det fel? Jag använder mig av Access och konstruerade en fråga och gjorde om den lite
för count. Om jag inte skall ha right join, vad bör jag ha (den fungerar bra)?.

LarsGMedlem sedan dec. 200012 465 inlägg
#5

I det här fallet blir det samma resultat som om du använder en INNER JOIN. En RIGHT join innebär att det inte behöver finnas matchande resultat i den vänstra tabellen, dvs t_kvarter, men då du har villkoret

(t_kvarter.kvarterId)=1

så kommer du ändå att välja bort de poster som inte matchar ditt joinvillkor.

sawMedlem sedan mars 20011 883 inlägg
#6

Ok jag tror att jag förstår, en inner join är att föredra. Tack för lektionen.

Genererad på 366 ms · cache AV · v20260730165559-full.f96bc7eb