24. april 2003 - 03:21Der er
3 kommentarer og 1 løsning
select og joins på to tabeller
jeg har et spørgsmål!
Jeg skal lave en query, hvor jeg finder en liste over taxidistrikter, og vise for hver, hvor mange ture der ankom den 1.9.2002, og hvor mange der afgik samme dag sam t differencen derimellem. Distrikter hvor der ingen ture går fra skal også med!
Tabel tur har bl.a disse kolloner: startTid, slutTid, VognNr(pk), oensketStartTid(pk), fraDistrikt, tilDistrikt og bestillingsTid
Tabel distrikt har følgende kolloner: distriktNr(pk), postNr, navn
jeg har lavet følgende indtil videre!
select distriktNr as DistriktNr, distrikt.navn, count(fraDistrikt) as afgang, count(tildistrikt) as ankomst, abs(count(fraDistrikt) - count(tilDistrikt)) as differensen
from distrikt left join tur on ((tur.startTid between 20020901000000 and 20020902000000) and distriktNr = fraDistrikt or distriktNr = tilDistrikt ) group by distriktNr;
jeg for de rigtige kolonner, men den er galt med afgang, tilgang og differencen, den skriver det samme tal i afgang og tilgang og derfor 0 i differensen. Jeg har fået at vide at jeg skal bruge nogle nestede select sætninger, men aner ikke hvordan man gør! PLEASE HJÆLP
select distriktNr as DistriktNr, distrikt.navn, (select count(distriktnr) from tur as t where t.fradistrikt = distrikt.distriktnr and t.startTid between 20020901000000 and 20020902000000) as afgang, (select count(distriktnr) from tur as t where t.tildistrikt = distrikt.distriktnr and t.startTid between 20020901000000 and 20020902000000) as ankomst, abs(count(fraDistrikt) - count(tilDistrikt)) as differensen group by distriktNr;
jeg har sat sub-selects ind, saa den for hvert distrikt, taeller hvor mange ture til og fra der var indenfor det tidsrum.
select d.distriktNr as DistriktNr, d.navn, count(t1.fraDistrikt) as afgang, count(t2.tilDistrikt) as ankomst, abs(count(t1.fraDistrikt) - count(t2.tilDistrikt)) as differensen from distrikt d left join tur t1 on ((t1.startTid between 20020901000000 and 20020902000000) and d.distriktNr = t1.fraDistrikt) left join tur t2 on ((t2.startTid between 20020901000000 and 20020902000000) and d.distriktNr = t2.tilDistrikt) group by distriktNr;
tak for hjælpen begge! dgivoni dit virkede ikke, pga sub-selecten, men proaccess det var perfekt, det var lige det jeg manglede!
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.