Opcje łączenia danych
Połączenia danych i nieważność rekordów
Czasami będziesz mieć tabelę, w której w polu brakuje niektórych rekordów. Oto przykład listy pracowników, w której niektóre zapisy nie określają działu, do którego należy pracownik:
SELECT Employees.EmployeeNumber AS [Employee #], Employees.FirstName, Employees.LastName, Employees.DepartmentCode AS Department FROM Employees;
Spowoduje to:
Jeśli utworzysz kwerendę sprzężenia wewnętrznego dwóch tabel, które mają relację, a w niektórych rekordach tabeli podrzędnej brakuje niektórych wartości w kolumnie klucza obcego, kwerenda wygeneruje tylko rekordy, które mają wartość. Oto przykład:
SELECT Employees.EmployeeNumber AS [Employee #], Employees.FirstName, Employees.LastName, Departments.DepartmentName AS Department FROM Departments INNER JOIN Employees ON Departments.DepartmentCode = Employees.DepartmentCode;
Spowoduje to:
Zauważ, że zapytanie generuje mniej rekordów. Tak się składa, że aparaty baz danych nie lubią rekordów o wartości null, zwłaszcza w polach współdzielonych, czyli polach, które są powiązane z relacjami. Aby upewnić się, że wszystkie rekordy tabeli podrzędnej są tworzone przez zapytanie, utwórz wartość domyślną dla rekordów, których wartości brakuje. Jeśli relacja używa prostej liczby całkowitej, utwórz rekord z wartością 0. Jeśli relacja używa ciągu znaków, możesz utworzyć rekord z wartością „Nie dotyczy”. Jeśli rekordy są przetwarzane przez komputer, możesz utworzyć rekord z ogólną/losową wartością, taką jak 00000 lub coś podobnego.
Praktyczne uczenie się:radzenie sobie z łączeniem danych i nieważnością zapisów
- Uruchom Microsoft Access
- Z zasobów towarzyszących tym lekcjom otwórz bazę danych Altair Realtors3
- Na wstążce kliknij Utwórz i kliknij Projekt zapytania
- W oknie dialogowym Pokaż tabelę kliknij dwukrotnie Właściwości i kliknij Zamknij
- Na liście Właściwości kliknij dwukrotnie PropertyNumber, City i State
- Przełącz zapytanie do widoku arkusza danych:
- Zwróć uwagę na liczbę rekordów:48.
Przełącz zapytanie do widoku projektu - Kliknij prawym przyciskiem myszy pusty obszar w górnej części okna i kliknij Pokaż tabelę
- W oknie dialogowym Pokaż tabelę kliknij dwukrotnie PropertyTypes i kliknij Zamknij
- Na liście PropertyTypes kliknij dwukrotnie PropertyType
- Przełącz zapytanie do widoku arkusza danych
- Zwróć uwagę na liczbę rekordów tym razem:44.
Wyświetl widok SQL zapytania i zmień jego kod w następujący sposób:SELECT Properties.PropertyNumber, Properties.City, Properties.State, Conditions.Condition FROM Properties INNER JOIN Conditions ON Properties.Condition = Conditions.Condition;
- Przełącz zapytanie do widoku arkusza danych
- Zwróć uwagę na liczbę rekordów:38.
Zamknij zapytanie bez zapisywania go - W okienku nawigacji kliknij dwukrotnie formularz PropertyTypes
- Utwórz nowy rekord w następujący sposób:
Typ właściwości Opis Nieznany Typ właściwości jest niedostępny lub nie jest jasny. Ilustracje - Zamknij tabelę PropertyTypes
- W okienku nawigacji kliknij dwukrotnie formularz Warunki
- Utwórz nowy rekord w następujący sposób:
Typ właściwości Opis Nieznany Obecny stan lub wygląd (wewnętrzny i/lub zewnętrzny) nieruchomości nie został sprawdzony, nie został oceniony lub nie jest jasno znany. - Zamknij tabelę warunków
- W okienku nawigacji kliknij prawym przyciskiem myszy tabelę Właściwości i kliknij Widok projektu
- W górnej części okna kliknij PropertyType
- W dolnej części kliknij Wartość domyślna i wpisz Nieznane
- W górnej części okna kliknij Warunek
- W dolnej części kliknij Wartość domyślna i wpisz Nieznane
- Zapisz tabelę i przełącz ją do widoku arkusza danych
- W kolumnie PropertyType dla każdej pustej komórki wybierz Nieznany
- W kolumnie Warunek dla każdej pustej komórki wybierz Nieznany
- Zauważ, że istnieje wartość domyślna dla kolumn PropertyType i Condition
- Ustawiając tylko wskazane wartości, utwórz nowe rekordy w następujący sposób:
Właściwość nr Typ właściwości Miasto Stan Kod pocztowy Sypialnie Łazienki Gotowa piwnica Garaż wewnętrzny Stan Wartość rynkowa 476005 Jednorodzinny Hanower, PA 17331 3 2,50 Sprawdzone 425790 152466 Martinsburg WV 1 1,00 135670 427048 Condominium Alexandria VA 3 2,00 Wymaga naprawy 622845 297427 Matinsburg Doskonały 729336 Alexandria VA 3 2,50 Wymaga naprawy 750000 300618 Harrisburg, PA 17109 5 3,50 Sprawdzone Zaznaczono Dobry kształt 515885 - Zamknij stół
- Na wstążce kliknij Utwórz i kliknij Projekt zapytania
- W oknie dialogowym Pokaż tabelę kliknij dwukrotnie Właściwości i kliknij Zamknij
- Na liście Właściwości kliknij dwukrotnie PropertyNumber, City i State
- Przełącz zapytanie do widoku arkusza danych
- Zwróć uwagę na liczbę rekordów:51.
Przełącz zapytanie do widoku projektu - Kliknij prawym przyciskiem myszy pusty obszar w górnej części okna i kliknij Pokaż tabelę
- W oknie dialogowym Pokaż tabelę kliknij dwukrotnie PropertyTypes i kliknij Zamknij
- Na liście PropertyTypes przeciągnij PropertyType i upuść go na City na dole
- Na liście Właściwości kliknij dwukrotnie Sypialnie i łazienki
- Przełącz zapytanie do widoku arkusza danych
- Zwróć uwagę na liczbę rekordów tym razem:51.
Zamknij zapytanie bez zapisywania go - Otwórz bazę danych Lambda Square Apartments1 utworzoną i używaną wcześniej
- Na wstążce kliknij Utwórz i kliknij Projekt zapytania
- W oknie dialogowym Pokaż tabelę kliknij dwukrotnie Płatności i kliknij Zamknij
- Na liście Płatności kliknij dwukrotnie Numer paragonu, Data płatności, Przetworzone przez, Numer rejestracyjny i Kwota płatności
- Przełącz zapytanie do widoku arkusza danych
- Zwróć uwagę na liczbę rekordów:63.
Przełącz zapytanie do widoku projektu - Kliknij prawym przyciskiem myszy pusty obszar w oknie i kliknij Pokaż tabelę...
- W oknie dialogowym Pokaż tabelę kliknij dwukrotnie Pracownicy i kliknij Zamknij
- Przeciągnij numer pracownika i upuść go na ProcessedBy
- W dolnej części okna zastąp ProcessedBy ciągiem
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Przełącz zapytanie do widoku arkusza danych
- Zwróć uwagę na liczbę rekordów:46.
Zamknij zapytanie bez zapisywania go - W okienku nawigacji kliknij dwukrotnie tabelę Pracownicy i utwórz nowy rekord w następujący sposób (dotyczy to transakcji dokonywanych w banku, na przykład najemcy, który wpłaca pieniądze na czynsz bezpośrednio w banku):
Liczba pracownika Imię Nazwisko Tytuł 00000 Automatyczne przetwarzanie transakcji elektronicznej - Zamknij tabelę Pracownicy
- W okienku nawigacji kliknij prawym przyciskiem myszy tabelę Płatności i kliknij Widok projektu
- W górnej części okna kliknij Przetworzone przez
- W dolnej części kliknij Wartość domyślna i wpisz „00000”
- Zapisz i zamknij stół
- Otwórz tabelę płatności
- W kolumnie ProcessedBy, w każdej pustej komórce wpisz 00000
- Zamknij tabelę płatności
- Na wstążce kliknij Utwórz i kliknij Projekt zapytania
- W oknie dialogowym Pokaż tabelę kliknij dwukrotnie Płatności i pracownicy
- Kliknij Zamknij
- Przeciągnij numer pracownika i upuść go na ProcessedBy
- Na liście Płatności kliknij dwukrotnie numer paragonu i datę płatności
- Naciśnij klawisz Tab i wpisz
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Na liście Płatności kliknij dwukrotnie Numer rejestracyjny i Kwota płatności
- Przełącz zapytanie do widoku arkusza danych
- Zwróć uwagę na liczbę rekordów:63.
Zamknij zapytanie bez zapisywania go
Dołączanie do więcej niż dwóch stołów
Jak dotąd nasze zestawienia złączeń obejmowały tylko dwie tabele. Właściwie możesz użyć większej liczby tabel. Podstawowa formuła dołączenia do trzech stołów to:
SELECT field-name(s) FROM first-table first-join-type second-table ON condition1 second-join-type third-table ON condition2
Wyrażenie rozpoczyna się od połączenia pierwszej z drugą tabelą, co oznacza, że obie tabele powinny współdzielić kolumnę w relacji typu klucz podstawowy-klucz obcy. W ten sam sposób możesz utworzyć drugie sprzężenie. Oczywiście druga i trzecia tabela powinny mieć wspólną kolumnę. W większości przypadków powinna istnieć kolumna współdzielona przez wszystkie trzy tabele. W większości przypadków relacja zaczyna się od kolumny klucza podstawowego z tabeli nadrzędnej. Ta kolumna jest następnie reprezentowana jako klucz obcy w pozostałych dwóch tabelach.
Praktyczna nauka:łączenie więcej niż dwóch stołów
- Na wstążce kliknij Utwórz i kliknij Projekt formularza
- W arkuszu właściwości kliknij kartę Wszystkie.
Kliknij Źródło nagrywania i kliknij jego przycisk z wielokropkiem - W tabeli Pokaż dwukrotnie kliknij Pracownicy, rejestracje i apartamenty
- Kliknij Zamknij
- Przeciągnij numer pracownika z listy pracowników i upuść go na ProcessedBy na liście rejestracji
- Przeciągnij kod apartamentu z listy apartamentów i upuść go na PropNbr na liście rejestracji
- Na liście Rejestracje kliknij dwukrotnie identyfikator rejestracji i datę rejestracji
- Naciśnij klawisz Tab i wpisz
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Na liście Rejestracje kliknij dwukrotnie imię, nazwisko, stan cywilny i liczbę dzieci
- Naciśnij klawisz Tab i wpisz:
Apartment: "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month"
- Wyświetl widok SQL zapytania:
SELECT Registrations.RegistrationID AS [Regist #], Registrations.RegistrationDate AS [Regist Date], [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")" AS Employee, Registrations.FirstName, Registrations.LastName, Registrations.MaritalSituation AS Status, Registrations.NumberOfChildren AS Children, "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month" AS Apartment FROM Apartments INNER JOIN (Employees INNER JOIN Registrations ON Employees.EmployeeNumber = Registrations.ProcessedBy) ON Apartments.ApartmentCode = Registrations.PropNbr;
- Zamknij Konstruktora zapytań
- Po zapytaniu, czy chcesz zapisać zmiany, kliknij Tak
- Zapisz formularz jako Przydziały czynszu
- Kliknij dwukrotnie przycisk na przecięciu linijek
- W arkuszu właściwości zmień następujące cechy:
Podpis:Apartamenty Lambda Square - Przydział czynszu
Wartość domyślna:Formularz ciągły
Automatyczne centrowanie:Tak
Przyciski nawigacyjne:Nie - Na wstążce kliknij Projekt
- W sekcji Narzędzia kliknij Dodaj istniejące pola
- Na Liście pól kliknij Mieszkanie, naciśnij i przytrzymaj Shift, kliknij Zarejestruj nr i zwolnij Shift
- Przeciągnij zaznaczenie do formularza
- Na Wstążce kliknij Rozmieść i kliknij Tabela
- Przeciągnij zaznaczenie w lewo
- Naciśnij Ctrl + A, aby wybrać wszystkie elementy sterujące
- Na Wstążce kliknij Usuń układ
- Dokończ projekt formularza. Oto przykład:
- Zapisz i zamknij formularz
Połączenia danych i analizy rekordów
Sortowanie rekordów
W dotychczas utworzonych złączeniach danych uwzględniliśmy wszystkie rekordy i pozwoliliśmy, aby silnik bazy danych wylistował je wyłącznie za pomocą reguł złączeń wbudowanych w SQL. Aby uczynić taką listę bardziej restrykcyjną, można zastosować pewne warunki, według których można odizolować niektóre rekordy. Filtry można tworzyć wizualnie w widoku projektu zapytania lub w podobnym oknie. Możesz także utworzyć filtr w SQL. Tak jak w poprzednich lekcjach, aby uwzględnić kryterium w WYBIERZ oświadczenie, możesz utworzyć GDZIE klauzula.
Praktyczna nauka:wprowadzenie łączeń i analiza danych
- Otwórz bazę danych Monson University1 używaną wcześniej
- Aby rozpocząć zapytanie, na Wstążce kliknij Utwórz i kliknij Projekt zapytania
- W oknie dialogowym Pokaż tabelę kliknij Zamknij
- Kliknij prawym przyciskiem myszy górną część okna i kliknij Widok SQL
- Zmień oświadczenie w następujący sposób:
SELECT EmployeeNumber AS [Employee #], FirstName AS [First Name], LastName AS [Last Name], Title, DepartmentName AS Department FROM Employees, Departments WHERE Employees.DepartmentCode = Departments.DepartmentCode ORDER BY LastName;
- Podgląd wyników w widoku arkusza danych
- W razie potrzeby na Wstążce kliknij Strona główna.
Zmień następujące cechy:
Nazwa czcionki:Californian FB (jeśli nie masz tej czcionki, wybierz Times New Roman)
Kolor czcionki:niebieski, akcent 1, jaśniejszy 80% (kolory motywu:piąta kolumna, drugi wiersz)
Kolor tła:Więcej kolorów:Czerwony:195, Zielony:95, Niebieski:15
Linie siatki:poziome
Alternatywny kolor wiersza:Więcej kolorów:Czerwony:128, Zielony:0, Niebieski:0 - Zamknij zapytanie bez zapisywania go
- Zamknij Microsoft Access