Avatar billede jakka Nybegynder
24. april 2003 - 03:21 Der 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
Avatar billede jakka Nybegynder
24. april 2003 - 17:41 #1
er der ikke nogen der kunne give mig et fif, jeg ved ikke hvordan jeg kan formulere det i mysql
Avatar billede dgivoni Nybegynder
25. april 2003 - 11:31 #2
proev med foelgende i stedet for:

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.
Avatar billede proaccess Nybegynder
25. april 2003 - 11:35 #3
Du kan prøve med denne (ingen sub-selects)...

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;
Avatar billede jakka Nybegynder
27. april 2003 - 23:42 #4
tak for hjælpen begge! dgivoni dit virkede ikke, pga sub-selecten, men proaccess det var perfekt, det var lige det jeg manglede!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester