Avatar billede avalon116 Nybegynder
02. marts 2005 - 11:11 Der er 10 kommentarer og
2 løsninger

joine tomme felter

Jeg har to tabeller, som jeg skal have joinet i en forespørgsel. Men hvis feltet er tomt i begge tabeller tager den det ikke med. Hvordan får jeg den til det?
02. marts 2005 - 11:20 #1
undlader at oprette joins men i stedet bruger kriterier:

Select tabel1.*, tabel2.* From tabel1, Tabel2 Where (tabel1.ditfelt = tabel2.ditfelt) Or (tabel1.ditfelt is null And tabel2.ditfelt is null)
Avatar billede avalon116 Nybegynder
02. marts 2005 - 11:37 #2
nej det dur ikke, det giver alt for mange felter. Nu tager den jo felter med på kryds og tværs bare de begge er tomme
02. marts 2005 - 11:46 #3
hvordan ser din SQL ud?
Avatar billede avalon116 Nybegynder
02. marts 2005 - 11:51 #4
SELECT tIndivid.*, tNyeBoliger.Kode
FROM tNyeBoliger INNER JOIN tIndivid ON (tNyeBoliger.Etage = tIndivid.Pri_Etage) AND (tNyeBoliger.Side = tIndivid.Pri_Side) AND (tNyeBoliger.År = tIndivid.År) AND (tNyeBoliger.Husnummer = tIndivid.Pri_Husnr) AND (tNyeBoliger.Vejkode = tIndivid.Pri_Vejkode) AND (tNyeBoliger.Bogstav = tIndivid.Pri_Bogstav);
Avatar billede avalon116 Nybegynder
02. marts 2005 - 11:52 #5
jeg gætter på, at dit forslag virker, hvis der kun var et felt men der er flere
Avatar billede avalon116 Nybegynder
02. marts 2005 - 11:53 #6
I hjælpen står der:
Joinforbinde felter, der indeholder Null-værdier
Når du joinforbinder tabeller i en forespørgsel, omfatter resultater kun poster, der ikke har Null-værdier i de tilsvarende felter. Hvis du f.eks. vil have vist en liste over leverandører og kunder, der bor i samme område, kan du oprette en forespørgsel, der medtager tabellerne Leverandører og Kunder, og tabellerne joinforbindes i feltet Område. Når du viser resultaterne, kan du kun se værdierne for de poster, der indeholder en værdi i feltet Område i begge tabeller.

men ikke noget om hvad man så skal gøre
02. marts 2005 - 11:54 #7
hvilket felt er det, som kan være tomt?
Avatar billede avalon116 Nybegynder
02. marts 2005 - 11:55 #8
der er 3:
bogstav, side og etage
02. marts 2005 - 12:12 #9
det er straks lidt sværere....den kan jeg ikke lige greje. Men jeg tænker lige over den...
Avatar billede avalon116 Nybegynder
02. marts 2005 - 12:39 #10
ok tak for det

jeg synes det er skørt at den ikke betragter tomme felter som værende ens og tager dem med også
Avatar billede Jørgen Kirkegaard Professor
07. marts 2005 - 22:34 #11
Du skriver "Men hvis feltet er tomt i begge tabeller tager den det ikke med. Hvordan får jeg den til det?". Altså feltET. 02/03-2005 11:55:22 skriver du, at der er 3 felter... I stedet for ON ... AND (bogstav=bogstav) AND ... må du skrive ON ... AND ( (A.bogstav=B.bogstav) OR (A.bogstav Is Null AND B.bogstav Is Null) ) AND ...

Altså: Felterne er ens, eller felterne er begge null.

Dette er samme princip som tj 02/03-2005 11:20:20; du vil blot have det på flere felter...Hvis du kan bruge det, er det højst 10 points til mig og resten til tj.
Avatar billede avalon116 Nybegynder
14. marts 2005 - 10:40 #12
jeg har nu prøvet det du foreslår. I så fald skal det vist se sådan ud for at virke:

SELECT tIndivid.*, tNyeBoliger.Kode
FROM tNyeBoliger, tIndivid
WHERE (((tNyeBoliger.Etage)=[tIndivid].[Pri_Etage]) AND ((tNyeBoliger.Side)=[tIndivid].[Pri_Side]) AND ((tNyeBoliger.År)=[tIndivid].[År]) AND ((tNyeBoliger.Husnummer)=[tIndivid].[Pri_Husnr]) AND ((tNyeBoliger.Vejkode)=[tIndivid].[Pri_Vejkode]) AND ((tNyeBoliger.Bogstav)=[tIndivid].[Pri_Bogstav])) OR (((tNyeBoliger.Etage) Is Null) AND ((tIndivid.Pri_Etage) Is Null) AND ((tNyeBoliger.Side)=[tIndivid].[Pri_Side]) AND ((tNyeBoliger.År)=[tIndivid].[År]) AND ((tNyeBoliger.Husnummer)=[tIndivid].[Pri_Husnr]) AND ((tNyeBoliger.Vejkode)=[tIndivid].[Pri_Vejkode]) AND ((tNyeBoliger.Bogstav)=[tIndivid].[Pri_Bogstav])) OR (((tNyeBoliger.Etage)=[tIndivid].[Pri_Etage]) AND ((tNyeBoliger.Side) Is Null) AND ((tIndivid.Pri_Side) Is Null) AND ((tNyeBoliger.År)=[tIndivid].[År]) AND ((tNyeBoliger.Husnummer)=[tIndivid].[Pri_Husnr]) AND ((tNyeBoliger.Vejkode)=[tIndivid].[Pri_Vejkode]) AND ((tNyeBoliger.Bogstav)=[tIndivid].[Pri_Bogstav])) OR (((tNyeBoliger.Etage)=[tIndivid].[Pri_Etage]) AND ((tNyeBoliger.Side)=[tIndivid].[Pri_Side]) AND ((tNyeBoliger.År)=[tIndivid].[År]) AND ((tNyeBoliger.Husnummer)=[tIndivid].[Pri_Husnr]) AND ((tNyeBoliger.Vejkode)=[tIndivid].[Pri_Vejkode]) AND ((tNyeBoliger.Bogstav) Is Null) AND ((tIndivid.Pri_Bogstav) Is Null));

Det er en ordentlig omgang, og kører alt for tungt. Men ser ud til at give den rette løsning. Mon det kunneh ave været skrevet mere smart...jeg ved det ikke.

Jeg har valgt at løse problemet ved at undgå tomme felter (sætte nul i de tomme felter).

I skal selvf. alligevel have point for at give en løsning.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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