10. november 2005 - 14:38Der er
10 kommentarer og 2 løsninger
inner join - medtager ikke blanke
Hej
Jeg har 2 tabeller som næsten indeholder de samme oplysninger. Tbl. 1: t_adr_indsendt - indeholder de adresser der er modtaget
tbl. 2: t_adr_vask - indeholder de samme adresser dog med rettelser
Jeg skal så have en forespørgsel der viser hele t_adr_indsendt og nogle udvalgte felter fra t_adr_vask. Det er ikke noget problem, men...
Der er 3 felter i de 2 tabeller der altid er ens, og jeg vil sikre at tabellerne joines på disse og har derfor flg. query
SELECT t_adr_indsendt.Abonnent_nr, t_adr_indsendt.Fornavn, t_adr_indsendt.Efternavn, t_adr_indsendt.Gadenavn, t_adr_indsendt.Husnr, t_adr_indsendt.Husbogstav, t_adr_indsendt.Etage, t_adr_indsendt.Placering, t_adr_indsendt.Stednavn, t_adr_indsendt.Postnr, t_adr_indsendt.Postboksnr, t_adr_indsendt.Adressenr, t_adr_indsendt.CO_Navn, t_adr_indsendt.Adresseringsnavn, t_adr_indsendt.Landekode, t_adr_indsendt.Bynavn, t_adr_indsendt.fil_nr, t_adr_vask.Abonnent_nr, t_adr_vask.Fornavn, t_adr_vask.Efternavn, * FROM t_adr_vask INNER JOIN t_adr_indsendt ON (t_adr_vask.Abonnent_nr = t_adr_indsendt.Abonnent_nr) AND (t_adr_vask.Fornavn = t_adr_indsendt.Fornavn) AND (t_adr_vask.Efternavn = t_adr_indsendt.Efternavn);
men problemet er at feltet efternavn i nogle tilfælde er blank i begge tabeller og det medfører at disse ikke medtages. Jeg får altså kun de poster hvor der står noget i alle 3 join felter...
Skal lige siges at jeg ved ikke om queryen kan laves på en bedre måde end jeg har forsøgt.
Men hvordan får jeg den til også at medtage de poster hvor efternavn er blank?
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.
in your querty right clicl on the thin line (realationship) and then choose the on ewhich gives you the data you want. This will give you an OUTER JOIN
Abonnent_nr, fornavn og efternavn er ens i begge tabeller, men er efternavn blank (også i begge) bliver alle 3 felter blanke i t_adr_indsendt men er udfyldt i t_adr_vask.
an inner join shows records from tables where there are realted records in both tables. An outer join (left or right) will also show records when ther is no related data in the other table.
Du skal være opmærksom på, at felter som er null (altså ikke udfyldt) ikke bliver knyttet sammen. De eksisterer principielt slet ikke (eller har ingen data).
Det kan derfor være en ide på din ON sætning at omdanne en Null værdi til f.eks. en enkelt space, således at de kan knyttes sammen alligevel. Det kan man gøre med en IIf funktion:
FROM t_adr_vask LEFT JOIN t_adr_indsendt ON (Iff(t_adr_vask.Efternavn Is Null, ' ', t_adr_vask.Efternavn) = IIf(t_adr_indsendt.Efternavn Is Null, ' ', t_adr_indsendt.Efternavn)) AND (t_adr_vask.Fornavn = t_adr_indsendt.Fornavn) AND (t_adr_vask.Abonnent_nr = t_adr_indsendt.Abonnent_nr)
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.