Select

Pola są wybierane ze źródła danych ODBC lub dostawcy OLE DB z użyciem standardowych instrukcji SELECT języka SQL. Akceptacja instrukcji SELECT zależy jednak od używanego sterownika ODBC lub dostawcy OLE DB.

Składnia:  

Select [all | distinct | distinctrow | top n [percent] ] fieldlist

From tablelist

[where criterion ]

[group by fieldlist [having criterion ] ]

[order by fieldlist [asc | desc] ]

[ (Inner | Left | Right | Full) join tablename on fieldref = fieldref ]

 

Istnieje też możliwość konkatenacji wyników kilku instrukcji SELECT za pomocą operatora union:

selectstatement Union selectstatement

 

Instrukcja SELECT jest interpretowana przez sterownik ODBC lub dostawcę OLE DB, w zależności od zakresu funkcji danych sterowników SQL lub dostawców ODBC mogą zatem występować różnice w porównaniu z ogólną składnią OLE DB, na przykład:

  • Klauzula as niekiedy nie jest dozwolona, czyli aliasname musi następować bezpośrednio po fieldname.
  • Klauzula as niekiedy jest obowiązkowa, gdy używane jest aliasname.
  • Klauzule distinct, as,where, group by, order by lub union czasami nie są obsługiwane.
  • Niektóre sterowniki ODBC nie akceptują niektórych z wymienionych powyżej znaków cudzysłowów.
Uwaga: Nie jest to pełny opis instrukcji SELECT języka SQL! Instrukcje SELECT mogą na przykład być zagnieżdżane, jedna instrukcja SELECT może zawierać kilka sprzężeń, liczba funkcji dozwolonych w wyrażeniach bywa bardzo duża itd.

Argumenty:  

Argument Opis
distinct distinct to predykat używany, jeśli powtarzające się kombinacje wartości w wybranych polach mają być ładowane tylko raz.
distinctrow distinctrow to predykat używany, jeśli powtarzające się rekordy w tabeli źródłowej mają być ładowane tylko raz.
fieldlist fieldlist ::= (*| field ) {, field }

Lista wybieranych pól. Użycie znaku * jako listy pól oznacza wszystkie pola tabeli.

fieldlist ::= field {, field }

Lista pól, rozdzielana przecinkami.

field ::= ( fieldref | expression ) [as aliasname ]

Jako wyrażenie expression można podać np. funkcję liczbową lub funkcję ciągu znaków opartą na jednym polu lub wielu polach. Zazwyczaj akceptowane są następujące operatory i funkcje: +, -, *, /, & (konkatenacja ciągu),sum(fieldname), count(fieldname), avg(fieldname)(average), month(fieldname) itp. Więcej informacji można znaleźć w dokumentacji sterownika ODBC.

fieldref ::= [ tablename. ] fieldname

Argumenty tablename i fieldname to ciągi znaków określające odpowiednio nazwę tabeli i nazwę pola. Jeśli zawierają np. odstępy, muszą być ujęte w proste cudzysłowy podwójne.

Klauzula as służy do przypisania polu nowej nazwy.
from tablelist ::= table {, table }

Lista tabel, z których będą wybierane pola.

table ::= tablename [ [as ] aliasname ]

Argument tablename może, ale nie musi być ujęty w cudzysłowy.

Zob.: From

where where to klauzula określająca, czy rekord ma być uwzględniony w selekcji, czy też nie.

criterion to wyrażenie logiczne, które może niekiedy być bardzo złożone. Akceptowane operatory to między innymi operatory i funkcje liczbowe, =, <> lub #(znak nierówności), >, >=, <, <=, and, or,not, exists,some, all,in oraz nowe instrukcje SELECT. Więcej informacji na ten temat można znaleźć w dokumentacji sterownika ODBC lub dostawcy OLE DB.

group by group by to klauzula do agregowania (grupowania) wielu rekordów w jeden. W obrębie jednej grupy wszystkie rekordy dla określonego pola muszą mieć tę samą wartość — w przeciwnym razie pola można używać jedynie z poziomu wyrażenia, np. jako sumy lub średniej. Wyrażenie to może odnosić się do jednego lub wielu pól i jest zdefiniowane w wyrażeniu symbolu pola.
having having to klauzula używana do kwalifikowania grup, działająca analogicznie do klauzuli where kwalifikującej rekordy.
order by order by to klauzula do określania kolejności sortowania tabeli wynikowej generowanej przez instrukcję SELECT.
join join to kwalifikator określający sprzężenie kilku tabel w jedną. Wszelkie nazwy pól i tabel zawierające odstępy lub znaki diakrytyczne muszą być ujęte w cudzysłowy. W przypadku automatycznego generowania skryptu przez aplikację QlikView używane są znaki cudzysłowu preferowane przez sterownik ODBC lub dostawcę OLE DB z definicji źródła danych podanej w instrukcji Connect.

Przykład 1:  

SELECT * FROM `Categories`;

Przykład 2:  

SELECT `Category ID`, `Category Name` FROM `Categories`;

Przykład 3:  

SELECT `Order ID`, `Product ID`,

`Unit Price` * Quantity * (1-Discount) as NetSales

FROM `Order Details`;

Przykład 4:  

SELECT `Order Details`.`Order ID`,

Sum(`Order Details`.`Unit Price` * `Order Details`.Quantity) as `Result`

FROM `Order Details`, Orders

where Orders.`Order ID` = `Order Details`.`Order ID`

group by `Order Details`.`Order ID`;

Zob. także: