Toon posts:

[sql] vergelijken tabellen samengestelde sleutel

Pagina: 1
Acties:

Verwijderd

Topicstarter
Dit topic gaat over Access en SQL, maar dat paste niet meer in de topictitel..

ok heb 2 qua structuur identieke tabellen, en ik wil controleren of bepaalde records niet voorkomen in de ene tabel.

De structuur is :

Sleutel1, Sleutel2 , Aantal

nu heb ik geprobeerd de tabellen te vergelijken via de standaard wizard (ja, ik weet het :() in access, maar die kan maar linken op één veld, en dat is niet voldoende.

het volgende SQL statement resulteerde in het hangen van mn PC :
code:
1
2
3
4
SELECT [SLEUTEL1], [SLEUTEL2], Aantal
FROM TABEL1
WHERE ([SLEUTEL1] & [SLEUTEL2]) not in (Select ([SLEUTEL1] 
& [SLEUTEL2]) FROM TABEL2;

iemand tips?

  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

"in" is ontzettend traag.
Probeet dit.

SELECT Tabel1.S1, Tabel1.S2, Tabel1.Aantal
FROM Tabel1, Tabel2
WHERE Tabel1.S1 = Tabel2.S1
AND Tabel1.S2 = Tabel2.S2

Of...

SELECT Tabel1.S1, Tabel1.S2, Tabel1.Aantal
FROM Tabel1 INNER JOIN Tabel2 ON (Tabel1.S1 = Tabel2.S1 AND Tabel1.S2 = Tabel2.S2)

Beide geven het zelfde resultaat.

Forget your fears...
...and want to know more...


Verwijderd

Topicstarter
Ja, dat begrijp ik, maar ik was eigenlijk opzoek naar de records die niet in tabel2 voorkomen.

  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

Probeer in dat geval

Select *
from Tabel1
WHERE S1 NOT ANY (Select Tabel2.S1 From Tabel2)
AND S2 NOT ANY (Select Tabel2.S2 From Tabel2)

Zou razendsnel moeten gaan...

Forget your fears...
...and want to know more...


  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

En zoek n's op keywords: ALL, ANY, EXISTS

Forget your fears...
...and want to know more...


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

code:
1
2
3
4
5
6
7
WHERE (veld1,veld2) NOT IN 
    (SELECT t.v1
         ,t,v2
     FROM   tabel t
      :
      :
    )

Verwijderd

Topicstarter
'ANY' kent Access SQL niet :? maar ik heb het al op een andere manier opgelost, en dan lukt het wel. Beetje lompe manier maarja...

Ik maak twee tabellen die de samengestelde sleutel van iedere tabel samenvoegen in een veld. Dan kijk ik of er verschillen zijn en splits die weer af in een 3e tabel. Daarna vergelijk ik (Sleutel1 & Sleutel2) = tabel3.Sleutel12

dan werkt het!

beetje lomp, maarja. Access werkt blijkbaar fijner met tabellen dan met query's :(

iedereen iig bedankt voor de tips!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Heb je mijn oplossing geprobeerd, zo hoor je namelijk te doen en een beetje DB kan het ook.

Verwijderd

Topicstarter
Nee, dat lukt niet, hij pikt de komma tussen veld1 en veld2 niet :(


BTW (typo tussen "t" en "v2", denk ik, moet punt zijn neem ik aan?)

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Ja klopt. Ik had het al zien staan, maar ik nam aan dat je het wel begreep.
Eventueel kan je het ook nog met twee in elkaar gecorrelleerde sub-queries doen.

dus not exists (select .....where not exists)
Op dinsdag 16 april 2002 11:15 schreef Vlek het volgende:
Nee, dat lukt niet, hij pikt de komma tussen veld1 en veld2 niet :(


BTW (typo tussen "t" en "v2", denk ik, moet punt zijn neem ik aan?)

Verwijderd

Topicstarter
Had ik al geprobeerd, als ik dat doe dan flipt ie.


Naja, dan maar op de lompe manier...

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op woensdag 17 april 2002 16:16 schreef Vlek het volgende:
Had ik al geprobeerd, als ik dat doe dan flipt ie.


Naja, dan maar op de lompe manier...
Geef dat statement dan eens. want de fout melding "ik flip" ken ik niet van een database :)

Verwijderd

Topicstarter
Access "hangt" en kan ik alleen maar afsluiten in het taakbeheer (NT 4.0) ik denk dat het aan de computer (200Mhz) ligt. Het statement wat ik ook geprobeerd heb :
code:
1
2
3
4
Select * 
From T1
Where T1.S1 NOT IN (Select S1 From T2)
AMD T1.S2 NOT IN (Select S2 From T2)

Mijn eerste bericht is het eerste statement wat ik geprobeerd heb.

dus...

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Probeer eens: (Het kan toch met een enkele not exists)
code:
1
2
3
4
5
6
7
8
SELECT * 
FROM   T1
WHERE  NOT EXISTS
    (SELECT 1
     FROM   T2
     WHERE  t2.s1 = t1.s1
     and    t2.s2 = t1.s2
    )

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Nu we toch lekker bezig zijn.. probeer hetzelfde eens zonder sub-select :P

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Waarom zou ik?
Ik weet dat MySQL het niet aankan. Maar Access toch wel?!
Op donderdag 18 april 2002 09:49 schreef Bosmonster het volgende:
Nu we toch lekker bezig zijn.. probeer hetzelfde eens zonder sub-select :P

Verwijderd

Topicstarter
Op donderdag 18 april 2002 09:46 schreef Goodielover het volgende:
Probeer eens: (Het kan toch met een enkele not exists)
code:
1
2
3
4
5
6
7
8
SELECT * 
FROM   T1
WHERE  NOT EXISTS
    (SELECT 1
     FROM   T2
     WHERE  t2.s1 = t1.s1
     and    t2.s2 = t1.s2
    )
!!! Het werkt ! TNX! -eindelijk-

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

You're welcome!
Pagina: 1