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)
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
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);
jeg gætter på, at dit forslag virker, hvis der kun var et felt men der er flere
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
hvilket felt er det, som kan være tomt?
der er 3:
bogstav, side og etage
det er straks lidt sværere....den kan jeg ikke lige greje. Men jeg tænker lige over den...
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å
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.
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.