tabellen vergelijken

Status
Niet open voor verdere reacties.

daveke

Gebruiker
Lid geworden
18 jan 2001
Berichten
161
Hoi,

Vraagje: bestaat er in Access 2000 een manier om twee tabellen met elkaar te vergelijken?

Het resultaat moet zijn dat enkel de records overblijven waar er verschillen zijn.
Dus wat in Tabel 1 niet overeenkomt in Tabel 2 moet naar een nieuwe tabel gaan (als dat mogelijk is)

Alvast bedankt
 
Ja.

1) De 2 tabellen in een query aan elkaar koppelen op het veld dat/de velden die overeenkomt.
2) De koppeling door dubbelklikken aanpassen in een Left- of RightJoin.
3) Als criterium onder het sleutelveld van de tabel waar de meeste records inzitten opgaven 'Is Null'.
 
Iets dergelijks had ik al geprobeerd. Maar je moet weten dat de twee tabellen elk zo'n 700.000 records bevatten. En dan duurt zo'n query een eeuwigheid.
Of doe ik iets fout??

De records bestaan uit zo'n 19 velden en elk veld van een record in Tabel 1 moet exact hetzelfde zijn als dat in Tabel 2.

Groetjes
 
Query

Een tabelmaakquery met de volgende indeling:

SELECT * INTO table3
FROM table1
WHERE table1.primairesleutel NOT IN (SELECT
table1.primairesleutel
FROM table1,table2
WHERE table1.veld1=table2.veld1 AND table1.veld2=table2.veld2 AND table1.veld3=table2.veld3)

In de subquery moet je voor elk veld een = vergelijking maken op dezelfde manier als hierboven met de eerste drie gedaan is.

Je krijgt nu alle rijen uit tabel1 die afwijken van tabel2. Probeer deze query eens, als het lang duurt zul je wellicht iets geduldiger moeten zijn.
 
Hoe kan dit? : SELECT table1.primairesleutel FROM table1, table2

Je kan dat veld toch niet uit twee tabellen halen
 
Natuurlijk haal je dat veld niet uit twee tabellen. Je haalt de primaire sleutel uit tabel 1 waarvoor geldt dat alle velden uit die record overeenkomen met een record in tabel 2. Je moet beide tabellen wel achter FROM opnemen, omdat onder WHERE gebruik gemaakt wordt van velden uit tabel 2 om mee te vergelijken. Je gebruikt: table1.

om aan te geven dat het veld primaire sleutel uit tabel 1 moet worden gehaald.

Door NOT IN voor de subquery te zetten draai je de selectie om en hou je dus de primaire sleutel waarden uit tabel 1 over waarvoor geldt dat niet alle velden uit de bijbehorende record overeenkomen met een record uit tabel 2.
 
ok het lukt

maar lang niet op een hele tabellen (beiden ongeveer 800.000 records)
pc loopt compleet vast
als ik de tabellen beperk tot zo'n 1000 records draait ie wel goed

nog suggesties??
Bedankt
 
Ik denk niet dat je queries in Access dusdanig kunt optimaliseren dat een query op 800.000 records een redelijke performance geven. Ik vrees dat je hier moet gaan denken aan een DBMS als Oracle of SQL Server.


Grtz,
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan