SELECT (Entity SQL)
Menentukan elemen yang dikembalikan oleh kueri.
Sintaks
SELECT [ ALL | DISTINCT ] [ topSubclause ] aliasedExpr
[{ , aliasedExpr }] FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause ]
-- or
SELECT VALUE [ ALL | DISTINCT ] [ topSubclause ] expr FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause
Argumen
ALL Menentukan bahwa duplikat dapat muncul di kumpulan hasil. ALL adalah default.
DISTINCT Menentukan bahwa hanya hasil unik yang dapat muncul di kumpulan hasil.
VALUE Mengizinkan hanya satu item yang ditentukan, dan tidak menambahkan pembungkus baris.
topSubclause
Ekspresi valid apa pun yang menunjukkan jumlah hasil pertama yang dikembalikan dari kueri, dari formulir top(expr)
.
Parameter LIMIT dari operator ORDER BY juga memungkinkan Anda memilih n item pertama dalam kumpulan hasil.
aliasedExpr
Ekspresi formulir:
expr
sebagai identifier
| expr
expr
Sebuah harfiah atau ekspresi.
Keterangan
Klausul SELECT dievaluasi setelah klausul FROM, GROUP BY, dan HAVING dievaluasi. Klausul SELECT hanya dapat merujuk ke item yang saat ini berada dalam cakupan (dari klausul FROM, atau dari cakupan luar). Jika klausul GROUP BY telah ditentukan, klausul SELECT hanya diperbolehkan untuk mereferensikan alias untuk kunci GROUP BY. Mengacu pada item klausul FROM hanya diizinkan dalam fungsi agregat.
Daftar satu atau lebih ekspresi kueri setelah kata kunci SELECT dikenal sebagai daftar pilih, atau lebih formal sebagai proyeksi. Bentuk proyeksi yang paling umum adalah ekspresi kueri tunggal. Jika Anda memilih anggota member1
dari koleksi collection1
, Anda akan menghasilkan koleksi baru dari semua nilai member1
untuk setiap objek di collection1
, seperti yang diilustrasikan dalam contoh berikut.
SELECT collection1.member1 FROM collection1
Misalnya, jika customers
adalah kumpulan jenis Customer
yang memiliki properti Name
yang berjenis string
, memilih Name
dari customers
akan menghasilkan kumpulan string, seperti yang diilustrasikan contoh berikut ini.
SELECT customers.Name FROM customers AS c
Dimungkinkan juga untuk menggunakan sintaks JOIN (FULL, INNER, LEFT, OUTER, ON, dan RIGHT). ON diperlukan untuk sambungan dalam dan tidak diperbolehkan untuk sambungan silang.
Klausul Pemilihan Baris dan Nilai
Entity SQL mendukung dua varian dari klausul SELECT. Varian pertama, pemilihan baris, diidentifikasi oleh kata kunci SELECT, dan dapat digunakan untuk menentukan satu atau lebih nilai yang harus diproyeksikan. Karena pembungkus baris ditambahkan secara implisit di sekitar nilai yang dikembalikan, hasil ekspresi kueri selalu berupa kumpulan baris.
Setiap ekspresi kueri dalam pemilihan baris harus menentukan alias. Jika tidak ada alias yang ditentukan, Entity SQL mencoba menghasilkan alias dengan menggunakan aturan pembuatan alias.
Varian lain dari klausul SELECT, pemilihan nilai, diidentifikasi oleh kata kunci SELECT VALUE. Ini memungkinkan hanya satu nilai yang akan ditentukan, dan tidak menambahkan pembungkus baris.
Pemilihan baris selalu dapat diekspresikan dalam istilah VALUE SELECT, seperti yang diilustrasikan dalam contoh berikut.
SELECT 1 AS a, "abc" AS b FROM C
SELECT VALUE ROW(1 AS a, "abc" AS b) FROM C
Pengubah All dan Distinct
Kedua varian SELECT di Entity SQL memungkinkan spesifikasi pengubah ALL atau DISTINCT. Jika pengubah DISTINCT ditentukan, duplikat dihilangkan dari koleksi yang dihasilkan oleh ekspresi kueri (hingga dan termasuk klausul SELECT). Jika pengubah ALL ditentukan, tidak ada penghapusan duplikat yang dilakukan; ALL adalah default.
Perbedaan dari Transact-SQL
Tidak seperti Transact-SQL, Entity SQL tidak mendukung penggunaan argumen * dalam klausul SELECT. Sebagai gantinya, Entity SQL mengizinkan kueri untuk memproyeksikan seluruh baris dengan merujuk alias kumpulan dari klausul FROM, seperti yang diilustrasikan dalam contoh berikut.
SELECT * FROM T1, T2
Ekspresi kueri Transact-SQL sebelumnya diekspresikan dalam Entity SQL dengan cara berikut.
SELECT a1, a2 FROM T1 AS a1, T2 AS a2
Contoh
Kueri Entity SQL berikut menggunakan operator SELECT untuk menentukan elemen yang akan dikembalikan oleh kueri. Kueri didasarkan pada Model Penjualan AdventureWorks. Untuk mengompilasi dan menjalankan kueri ini, ikuti langkah-langkah berikut:
Ikuti prosedur di Cara: Menjalankan Kueri yang Menampilkan Hasil StructuralType.
Teruskan kueri berikut sebagai argumen ke metode
ExecuteStructuralTypeQuery
:
SELECT VALUE product FROM AdventureWorksEntities.Products
AS product WHERE product.ListPrice < @price