02. marts 2005 - 11:11Der 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?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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);
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.
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.
Synes godt om
Ny brugerNybegynder
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.