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?


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 ...


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.