Porównywanie tabel dostępu

0

Mam dwie tabele bazy danych Access zawierające nazwy miejsc.

Tabela A zawiera 30 000 miejsc, a tabela B zawiera 25 000 miejsc.

Jak mogę uzyskać tabelę C, która zawiera tylko 5000 miejsc, które są w tabeli A, ale nie w tabeli B?

Darren Cook
źródło
Czy musi przejść do tabeli, czy też zrobi to zapytanie?
Kol.

Odpowiedzi:

1

W świecie SQL uruchomiłbyś zapytanie SELECT na większej tabeli, która wyświetla wszystkie nazwy miejsc w tabeli A, dla których nie można znaleźć dopasowania w B - coś w stylu:

SELECT     a.placename
FROM       tablea as a
WHERE      NOT EXISTS (SELECT * FROM tableb as b WHERE b.placename = a.placename)

Stanowiłoby to część zapytania, które umieszcza wyniki w tabeli c

Nie jestem pewien, czy to pomoże, ale nie mam teraz dostępu do Access! Mam nadzieję, że za chwilę pojawi się guru Access ...

Linker3000
źródło
NOT EXISTS nie jest dobrze zoptymalizowany w Jet / ACE - często nie używa indeksów po obu stronach porównania i dlatego jest bardzo wolny. Zwykle LEFT JOIN będzie bardziej wydajny, ale wynik może nie być edytowalny. To może nie mieć znaczenia tutaj.
David W. Fenton