Avatar billede bluwduch Nybegynder
04. august 2003 - 15:25 Der er 7 kommentarer og
1 løsning

Joine på en attribut uden nøgle

Hejsa!

Har følgende problem, at jeg arbejder på 2 tabeller. Den ene indeholder en masse information, samt et stk. attribut som kan være NULL som jeg skal benytte i den anden tabel i en join for at trække nogle andre værdier ud der. Disse værdier skal kun trækkes ud hvis den første attribut ikke er NULL, for ellers får man fejl på join'en.

Kan dette gøres på en køn måde i én stored procedure, eller skal man ud i 2 eller en anden løsning? - For jeg har overvejet at man kan tjekke på om den er NULL, og så lave 2 forskellige queries til hver situation - Dog har jeg nemlig samme situation med en anden attribut, hvilke gør det bliver til en masse IF...ELSE.... derned af.

Nogle guldkorn?
Avatar billede arne_v Ekspert
04. august 2003 - 17:55 #1
Giver det ikke sig selv hvis du laver en normal (inner) join ?

Rækker der ikke har noget match i den anden tabel komemr ikke med.
Avatar billede bluwduch Nybegynder
04. august 2003 - 22:36 #2
Jo, men så skal jeg lave en eller anden form for check, som jeg også efterspørger - Den første attribut kan nemlig godt være NULL, og så fejler den inner join, da den ikke har noget at sammenligne med.
Avatar billede arne_v Ekspert
04. august 2003 - 22:39 #3
Den fejler ikke. Data kommer bare ikke med. Men det var som jeg læser
dit spørgsmål også det du ville.
Avatar billede bluwduch Nybegynder
04. august 2003 - 22:40 #4
Da jeg prøvede så fejlede den, men jeg vil lige undersøge det nærmere i morgen tidlig :-)
Avatar billede bluwduch Nybegynder
05. august 2003 - 09:27 #5
Hvis jeg laver en inner join hvor relationen mellem de to tabeller ikke eksisterer, så får jeg følgende fejl:

ADODB.Field (0x80020009)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
Avatar billede bluwduch Nybegynder
05. august 2003 - 09:33 #6
Ahhh! - Det er ikke databasen der fejler, men ASP'en da jeg arbejde på et resultset der er tomt. Men det betyder at istedet for at undlade de ting der ikke eksisterer i databasen, så undlades alle kolonner i hver række. Det var jo meningen at et felt bare skulle være tomt hvis den inner join ikke virkede.
Avatar billede bluwduch Nybegynder
05. august 2003 - 09:45 #7
Så lige for at understrege den nuværende situation, så returneres der et tomt resultset lige så snart en inner join fejler, istedet for det bare er det ene felt der mangler. Hvad gør man så?
Avatar billede bluwduch Nybegynder
05. august 2003 - 10:28 #8
Har løst det - Svaret var at bruge en outer join istedet for. På den måde returnes et resultset med de værdier der er gode nok :-). Så lærte jeg også noget om det!.
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