Niniejszy artykuł pochodzi z zestawu artykułów dotyczących języka Access SQL. Omówiono w nim, jak napisać klauzulę SELECT, a także na przykładach przedstawiono różne techniki, których można używać podczas pisania tej klauzuli.
Aby zapoznać się z omówieniem języka Access SQL, zobacz artykuł Język Access SQL: podstawowe pojęcia, słownictwo i składnia.
W tym artykule
Wybieranie pól: klauzula SELECT
Instrukcja SELECT zwykle zaczyna się od klauzuli SELECT. Klauzula SELECT umożliwia określenie nazw pól zawierających dane, których chcesz użyć w zapytaniu. Zamiast lub oprócz pól mogą być także używane wyrażenia. Jako pola można też użyć kolejnej instrukcji SELECT — jest to nazywane podzapytaniem.
Załóżmy, że chcesz poznać numery telefonów klientów. Przy założeniu, że pole przechowujące numery telefonów klientów nosi nazwę txtCustPhone, klauzula SELECT jest wyświetlana w następujący sposób:
SELECT [txtCustomerPhone]
Nazwę można ująć w nawiasy kwadratowe. Jeśli nazwa nie zawiera żadnych spacji ani znaków specjalnych (takich jak znaki interpunkcyjne), nawiasy kwadratowe są opcjonalne. Jeśli w nazwie znajdują się spacje lub znaki specjalne, zastosowanie nawiasów jest konieczne.
Porada: Nazwa zawierająca spacje jest łatwiejsza do odczytania i pozwala zaoszczędzić czas podczas projektowania formularzy i raportów, ale może spowodować, że będziesz wpisywać więcej podczas pisania instrukcji SQL. Należy wziąć pod uwagę ten fakt podczas nazywania obiektów w bazie danych programu Access.
Jeśli dana instrukcja SQL zawiera co najmniej dwa pola o takiej samej nazwie, do nazwy pola w klauzuli SELECT trzeba dodać nazwę źródła danych każdego z tych pól. Należy użyć tej samej nazwy źródła danych co w przypadku klauzuli FROM.
Wybieranie wszystkich pól
Jeśli chcesz uwzględnić wszystkie pola ze źródła danych, możesz wymienić je wszystkie osobno w klauzuli SELECT lub zastosować symbol wieloznaczny gwiazdki (*). W przypadku użycia gwiazdki program Access po uruchomieniu zapytania określa pola zawarte w źródle danych i uwzględnia je wszystkie w zapytaniu. Dzięki temu zapytanie jest aktualne, nawet jeśli do źródła danych zostaną dodane nowe pola.
Gwiazdkę można zastosować do jednego lub wielu źródeł danych w instrukcji SQL. Jeśli używasz gwiazdki, a istnieje wiele źródeł danych, oprócz gwiazdki musisz podać nazwę źródła danych, aby program Access mógł ustalić, z którego źródła danych ma uwzględnić wszystkie pola.
Załóżmy, że chcesz zaznaczyć wszystkie pola z tabeli zamówień (Orders), ale tylko pole adresu e-mail z tabeli kontaktów (Contacts). Klauzula SELECT może wówczas wyglądać następująco:
SELECT Orders.*, Contacts.[E-mail Address]
Uwaga: Pamiętaj, gdzie została użyta gwiazdka. Późniejsze dodanie do źródła danych nowych, nieplanowanych wcześniej pól może spowodować, że wyniki zapytania będą niezgodne z oczekiwaniami.
Wybieranie unikatowych wartości
Jeśli wiesz, że dana instrukcja spowoduje zaznaczenie nadmiarowych danych, a chcesz uzyskać tylko unikatowe wartości, użyj słowa kluczowego DISTINCT w klauzuli SELECT. Załóżmy, że z każdym z klientów powiązanych jest kilka różnych obszarów, ale w przypadku niektórych z nich są używane te same numery telefonów. Jeśli chcesz, aby każdy numer telefonu wystąpił tylko raz, klauzula SELECT powinna wyglądać następująco:
SELECT DISTINCT [txtCustomerPhone]
Stosowanie nazw zastępczych dla pól lub wyrażeń: słowo kluczowe AS
Etykietę wyświetlaną dla dowolnego pola w widoku arkusza danych można zmienić, używając słowa kluczowego AS i aliasu pola w klauzuli SELECT. Alias pola to nazwa przypisywana do pola w zapytaniu, aby ułatwić odczytywanie wyników. Jeśli na przykład chcesz wybrać dane z pola o nazwie txtCustPhone, a pole zawiera numery telefonów klientów, możesz poprawić czytelność wyników, używając aliasu pola w instrukcji SELECT w następujący sposób:
SELECT [txtCustPhone] AS [Customer Phone]
Uwaga: Aliasu pola trzeba użyć, jeśli w klauzuli SELECT jest używane wyrażenie.
Wybieranie przy użyciu wyrażenia
Czasami zachodzi konieczność wyświetlenia obliczeń na podstawie danych lub pobrania tylko części danych pola. Załóżmy, że chcesz uzyskać rok urodzenia każdego z klientów, korzystając z danych zawartych w polu BirthDate w bazie danych. Klauzula SELECT może wówczas wyglądać następująco:
SELECT DatePart("yyyy",[BirthDate]) AS [Birth Year]
To wyrażenie składa się z funkcji DatePart oraz dwóch argumentów — „yyyy” (stała) oraz [BirthDate] (identyfikator).
Jako pola można użyć dowolnego prawidłowego wyrażenia, o ile jego dane wyjściowe mają postać pojedynczej wartości (przy pojedynczej wartości wejściowej).