Avatar billede Lasse Novice
04. juli 2000 - 11:41 Der er 4 kommentarer og
1 løsning

Jeg får ALT for mange resultater

ok, jeg har to tabeller: person og byer. Det er bare en test, men det virker vist ikke lige som jeg vil have det.
I tabellen person har jeg attributterne:
Fornavn varchar(20) not null,
Efternavn varchar(20) not null,
id int not null auto_increment ,
byid int,
icq varchar(8) not null,
primary key (id)

I tabellen byer har jeg:
byid - int not null auto_increment,
byen varchar(30),
zip varchar(30)

Alt dette virker som også fint nok. Som Du nok har gættet refererer person.byid til byer.byid !

Har man ikke nogen hjemby(byid), ja så indsættes "værdien" null. Jeg vil så gerne uddrage alle personer(fornavn,efternavn,zip,byen,icq), og jeg bruger denne SQL sætning(det er her problemet opstår):

SELECT fornavn,efternavn,byen,zip,icq FROM person,byer WHERE person.byid=byer.byid or isnull(person.byid)

De personer som ikke har nogen hjemby(byid), men istedet værdien null, ja de får tildelt ALLE byerne i tabellen byer. Det fatter jeg ikke en meter af, men det er der måske en logisk forklaring på. Jeg søger selvfølgelig den rigtige SQL sætning, men jeg søger ALLERMEST forklaringen på hvorfor MIN ikke virker... Håber der kommer nogle gode svar, men jeg kender jer jo godt nok dertil :-)
Avatar billede sjensen Nybegynder
04. juli 2000 - 12:23 #1
prøv at sætte paranteser omkring værdierne i din where caluse:

WHERE (person.byid=byer.byid) or (isnull(person.byid))


Avatar billede erikjacobsen Ekspert
04. juli 2000 - 13:15 #2
Når du kombinerer (joiner) 2 tabeller med en WHERE-klausul, beder du SQL-maskinen tage
alle kombinationer af rækker fra den ene og fra en anden, og undersøge om kombinationen
opfylder betingelse. Hvis person.byid er null, vil din WHERE-klausul være sand for alle byer. Derfor.

Du kan gøre det med 2 Selecter:

SELECT fornavn,efternavn,byen,zip,icq FROM person,byer WHERE person.byid=byer.byid
SELECT fornavn,efternavn,icq FROM person WHERE isnull(person.byid)

og det kan du nemt gøre i PHP eller lignende. Brugeren af siden kan jo ikke se hvordan du gør.
Avatar billede Lasse Novice
04. juli 2000 - 19:21 #3
ja erik, du svarede rigtigt, så du må vel få pointene...

Tak for svaret - også dig sjensen(det virkede ikke, men alligevel)
Avatar billede erikjacobsen Ekspert
04. juli 2000 - 19:47 #4
Mig en fornøjelse.
Avatar billede sjensen Nybegynder
04. juli 2000 - 22:29 #5
gooky, fint nok !
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