Avatar billede meiland Mester
15. december 2003 - 08:41 Der er 14 kommentarer og
1 løsning

Finde de adresse som ikke optræder i begge tabeller

Hej alle !

Jeg har to tabeller, hver med en lang række adresser.

I tabel 1 har jeg kun adresser og ingen andre oplysninger.
I tabel 2 har jeg også en række adresser, men der skal filtreres en del fra, nemlig status<>2 samt rensekrav=3

Jeg skal nok over i SQL, men er der nogle der kan hjælpe mig ??
Avatar billede mugs Novice
15. december 2003 - 08:43 #1
Se på forespørgselsguiden Find ikke relaterede poster
Avatar billede trer Nybegynder
15. december 2003 - 08:45 #2
Ellers

select * from tabel2 where tabel2.status<>2 and tabel2.rensekrav=3

evt

select * from tabel1 inner join tabel2
on tabel1.primærnøgle = tabel2.fremmednøgle
where tabel2.status<>2 and tabel2.rensekrav=3
Avatar billede meiland Mester
15. december 2003 - 09:13 #3
Nedenstående SQL-sætning giver mig de adresser som står i begge tabeller. Kan den laves om ???

SELECT [Afløb].[Adresse], [Afløb].[Status], [Afløb].[Rensekrav], [Lysegrøn-adresse].[ejendom]
FROM [Lysegrøn-adresse] inner JOIN Afløb ON [Lysegrøn-adresse].[ejendom]=[Afløb].[Adresse]
WHERE ((([Afløb].[Status])=2) And (([Afløb].[Rensekrav])<>3));
Avatar billede trer Nybegynder
15. december 2003 - 09:15 #4
Eh, ja...

SELECT [Afløb].[Adresse], [Afløb].[Status], [Afløb].[Rensekrav], [Lysegrøn-adresse].[ejendom]
FROM [Lysegrøn-adresse] inner JOIN Afløb ON [Lysegrøn-adresse].[ejendom]=[Afløb].[Adresse]
WHERE ((([Afløb].[Status])<>2) And (([Afløb].[Rensekrav])=3));
Avatar billede mugs Novice
15. december 2003 - 09:16 #5
Du må have et felt der måler om den ene tabel er Null:

SELECT Tabel1.felt1
FROM Tabel1 LEFT JOIN Tabel2 ON Tabel1.felt1 = Tabel2.felt1
WHERE (((Tabel2.felt1) Is Null));
Avatar billede trer Nybegynder
15. december 2003 - 09:50 #6
ah jeg havde misforstået det.

adresser i lysegrøn-adresser der ikke er i afløb:

select * from [lysegrøn-adresse] where [ejendom] not in (select [adresse] from [afløb])

adresser i afløb der ikke er i lysegrøn-adresser :

select * from [afløb] where [adresse] not in (select [ejendom] from [lysegrøn-adresse])
Avatar billede terry Ekspert
15. december 2003 - 10:52 #7
You do NOT say what you want to do with the first table which only conrains "adresser"!


Its quite easy to make a query showing only records where status = 2 and rensekrav=3


SELECT * FRom ThisIsTheTableName WHERE Status = 2 AND rensekrav <> 3

and if it is only one of the criteria which needs to be true then use


SELECT * FRom ThisIsTheTableName WHERE Status = 2 OR rensekrav <> 3


If you want to show ALL addresses from BOTH tables and at the same time which meet the criteria

then

SELECT adresser FROM table1
UNION
SELECT adresser FROM table2
WHERE WHERE Status = 2 AND rensekrav <> 3


OR again if only one of the criteria needs to be true

SELECT adresser FROM table1
UNION
SELECT adresser FROM table2
WHERE WHERE Status = 2 OR rensekrav <> 3
Avatar billede terry Ekspert
15. december 2003 - 10:54 #8
NOT using the UNION will not show duplicates either!
Avatar billede meiland Mester
15. december 2003 - 11:51 #9
Terry: Min tabel Lysegrøn-adresse indeholder et stamkartotek over en række ejendomme.

Tabellen Afløb indeholder de samme ejendomme (samt en del flere). Ejendommene er tildelt en statusværdi (1-4), hvor statusværdi 2 svarer til de ejendomme i tabel Lysegrøn-adresse. Samtidig er ejendommene i Afløb tildelt en krav-værdi (1-5). Jeg skal bruge de adresser i Lysegrøn-adresse som ikke optræder i forspørgelsen "Ejendomme i Afløb, hvor status=2 og krav<>3"

Formålet er simpelthen for at krydschecke antallet af ejendomme i Lysegrøn-adresse samt forspørgelsen "Ejendomme i Afløb, hvor status=2 og krav<>3".
Avatar billede terry Ekspert
15. december 2003 - 12:17 #10
NOT using the UNION will not show duplicates either! =
Using the UNION will not show duplicates either!
Avatar billede terry Ekspert
15. december 2003 - 12:22 #11
SELECT [Lysegrøn-adresse].[ejendom] FROM [Lysegrøn-adresse] WHERE [Lysegrøn-adresse].[ejendom] NOT IN
(SELECT [Afløb].[Adresse]FROM Afløb WHERE [Afløb].[Status]=2) And [Afløb].[Rensekrav]<>3)
Avatar billede terry Ekspert
15. december 2003 - 12:23 #12
that should have been>

!
Still not 100% sure what you are after.

THis confuses things!
"Jeg skal bruge de adresser i Lysegrøn-adresse som ikke optræder i forspørgelsen "Ejendomme i Afløb, hvor status=2 og krav<>3"

But if I give you what I think you ask for then it would be something like


SELECT [Lysegrøn-adresse].[ejendom] FROM [Lysegrøn-adresse] WHERE [Lysegrøn-adresse].[ejendom] NOT IN
(SELECT [Afløb].[Adresse]FROM Afløb WHERE [Afløb].[Status]=2) And [Afløb].[Rensekrav]<>3)
Avatar billede meiland Mester
15. december 2003 - 13:16 #13
Tak for hjælpen Terry
Avatar billede terry Ekspert
15. december 2003 - 13:56 #14
does the SQL work?
Avatar billede meiland Mester
16. december 2003 - 00:03 #15
terry. YES
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