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. Używanie instrukcji SELECT wymaga otwartego połączenia danych ze źródłem.
[ (Inner | Left | Right | Full) jointablenameonfieldref = fieldref ]
Istnieje też możliwość konkatenacji 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.
InformacjaNie 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:
Argumenty
Argument
Opisu
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. Niektóre zwykle akceptowane operatory i funkcje są następujące: +, -, *, /, & (konkatenacja ciągu znaków), sum(fieldname), count(fieldname), avg(fieldname)(average), month(fieldname) itp. Więcej informacji na ten temat 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.
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ę Qlik Sense 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`