Język Access SQL: klauzula SELECT

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

Początek strony

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.