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.
Syntax:
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 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.
Arguments:
Argumenty
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.
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ę 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. |
Example 1:
SELECT *
FROM `Categories`;
Example 2:
SELECT `Category
ID`, `Category Name` FROM `Categories`;
Example 3:
SELECT `Order
ID`, `Product ID`,
`Unit Price`
* Quantity * (1-Discount) as NetSales
FROM `Order
Details`;
Example 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`;