Avatar billede jobless Nybegynder
09. juli 2003 - 09:10 Der er 11 kommentarer og
1 løsning

Count med afgrænsning skal også vise evt. 0

Hej.

Jeg er tæmmeligt ny indenfor MySQL, og mangler derfor hjælp til flg:

Jeg har 2 tabeller, som er relaterede på et id.
Tabel 1 indeholder id, navne, type m.m. og tabel 2 indeholder id, postnummer m.m.
Tabellerne er ikke relateret til hinanden, men har samme id udfor relaterede poster.
Det er en lidt atypisk måde at opbygge tabellerne på, men jeg troer at det er pga. noget import halløjsa.

Problemet:
Jeg har lavet en sql som counter antallet af navne i hvert postnummer, samt afgrænser på et postnummer interval. Dette virker fint. Når jeg så yderligere afgrænser på tabel1-type, returneres kun postnummer og antal af fundne poster, og ikke 0 udfor de postnumre som ikke indeholder nogle relaterede poster.

Er det volapyk, eller er der nogen som er med ??

MVH

JoBless
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 09:12 #1
Du skal nok bruge en left join - men hvordan ser din sql-sætning ud?
Avatar billede jobless Nybegynder
09. juli 2003 - 10:12 #2
Den er nogenlunde sådan her:

Select postnummer, count(postnummer) as antal from location left join branche on location.ID=branche.ID where location.postnummer>=7400 and location.postnummer<=7500 and branche.branche=11 group by(postnummer) order by postnummer
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 10:15 #3
Hvad gør
  location.ID=branche.ID
?
Avatar billede jobless Nybegynder
09. juli 2003 - 11:07 #4
Joiner felterne (formodentligt) ?!?
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 11:12 #5
Ja :) Men har de noget med hinanden at gøre? Hvad står der i dine felter?
Avatar billede jobless Nybegynder
09. juli 2003 - 11:45 #6
Felterne indeholder samme id.
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 11:48 #7
Jeg skal have mere information - ellers kan jeg ikke hjælpe dig
Avatar billede jobless Nybegynder
09. juli 2003 - 12:10 #8
Ok, jeg prøver:

Location:
id (indeholder id'er på nogle firmaer)
postnummer (indeholder postnumre)

Branche:
id (indeholder id'er på nogle firmaer)
branche (indeholder en kode)

Jeg vil have et udtræk som giver:
Felt1: ALLE postnumre i mit ønskede interval
Felt2: Antal poster i tabellen branche som ligger i det enkelte postnummer og opfylder betingelsen på feltet 'kode'.

Er det nogenlunde klart?
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 12:23 #9
Sådan

Select postnummer, count(branche) as antal from location left join branche on location.ID=branche.ID where location.postnummer>=7400 and location.postnummer<=7500 and (branche.branche=11 or branche.branche is null) group by(postnummer) order by postnummer
Avatar billede jobless Nybegynder
09. juli 2003 - 13:02 #10
Tak, det virker perfekt.

MVH

JoBless
Avatar billede jobless Nybegynder
09. juli 2003 - 13:02 #11
svar, plz...
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 13:04 #12
:)
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