Menggunakan sintaks SELECT enam di ADO
Penulis:Eve Cole
Waktu Pembaruan:2009-05-30 19:54:23
subkueri
Dalam ekspresi SELECT, SELECT...INTO, INSERT...INTO, DELETE, atau UPDATE, Anda dapat menyertakan ekspresi SELECT. Ekspresi SELECT ini disebut subquery.
Anda dapat membuat subkueri menggunakan tiga sintaksis:
Ekspresi [APA SAJA |. SEMUA |. BEBERAPA] (subkueri)
Ekspresi [TIDAK] IN (subkueri)
[TIDAK] ADA (subkueri)
Ekspresi SELECT dari subkueri memiliki sintaks yang sama dengan ekspresi SELECT umum dan harus diapit tanda kurung.
Anda dapat menggunakan subkueri untuk mengganti operator dalam ekspresi SELECT, atau dalam klausa WHERE atau HAVING.
Kata kunci ANY dan SOME memiliki arti yang sama dan digunakan untuk memilih kondisi perbandingan dari setiap record yang cocok dengan subquery. Misalnya, contoh berikut akan mengembalikan catatan dengan harga satuan produk lebih besar dari kuantitas apa pun yang lebih besar dari 100 dalam pesanan:
PILIH * DARI produk
DIMANA harga satuan > APAPUN
(PILIH harga satuan DARI pesanan
DIMANA jumlah > 100)
Kata kunci ALL digunakan untuk memilih kondisi perbandingan semua record yang cocok dengan subquery.
Misalnya, dalam contoh di atas, mengubah ANY menjadi ALL akan mengembalikan catatan dengan harga satuan produk lebih besar dari semua pesanan dengan kuantitas lebih dari 100.
Predikat kata kunci IN untuk mengambil record tertentu yang mengandung nilai yang sama di query utama dan hanya di subquery. Contoh berikut mengembalikan semua produk yang dijual dengan diskon 25 persen atau lebih:
Kata kunci IN digunakan untuk memilih record di subquery. Misalnya, contoh berikut akan mengembalikan catatan dengan jumlah > 100 dalam urutan:
PILIH * DARI produk
DIMANA kode produk IN
(PILIH kode produk DARI pesanan
DIMANA jumlah > 100)
Sebaliknya, kata kunci NOT IN digunakan untuk memilih record yang tidak termasuk dalam subquery.
Dalam perbandingan benar/salah, Anda dapat menggunakan kata kunci EXISTS untuk menentukan apakah subkueri akan mengembalikan rekaman apa pun.
Contoh ASP dari kata kunci ALL, seperti program ASP rs24.asp adalah sebagai berikut, [PILIH nama, mata pelajaran, skor Dari ujian Where subject = 'aritmatika' dan skor >= All (PILIH skor Dari ujian Where subject = 'aritmatika' ' dan nama =' Zhang San')] Temukan catatan aritmatika dari tes aritmatika yang nilainya lebih besar atau sama dengan Zhang San:
<%
Setel koneksi1 = Server.CreateObject("ADODB.Connection")
conn1.Buka "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Setel rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "PILIH nama, mata pelajaran, nilai Dari ujian Dimana mata pelajaran = 'Aritmatika' dan nilai >= Semua (PILIH nilai Dari ujian Dimana mata pelajaran = 'Aritmatika' dan nama = 'Zhang San')"
rs2.Buka SqlStr,sambungan1,1,1
Respon.Tulis "<p>Semua skor lebih tinggi dari aritmatika Zhang San"
Lakukan selagi bukan rs2.EOF
Respon.Tulis "<BR>" & rs2("Nama") & " " & rs2("Subjek") & " Nilai: " & rs2("Nilai")
rs2.PindahBerikutnya
Lingkaran
rs2.Tutup
%>
Program ASP rs24.asp di atas menggunakan browser di sisi klien untuk menelusuri hasil eksekusi dan menampilkan catatan aritmatika dari tes aritmatika yang skornya lebih besar atau sama dengan Zhang San.
Setiap
Kata kunci ANY digunakan untuk memilih kondisi perbandingan dari setiap record yang cocok dengan subquery. Misalnya, program ASP rs24.asp adalah sebagai berikut, [PILIH nama, mata pelajaran, skor Dari ujian Dimana mata pelajaran = 'aritmatika' dan skor >= Apa saja (Skor PILIH Dari ujian Dimana Subjek='Aritmatika' dan Nama='Zhang San')] Temukan catatan yang pecahannya lebih besar atau sama dengan pecahan aritmatika mana pun dari Zhang San:
<%
Setel koneksi1 = Server.CreateObject("ADODB.Connection")
conn1.Buka "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Setel rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "PILIH nama, mata pelajaran, nilai Dari ujian Dimana mata pelajaran = 'Aritmatika' dan nilai >= Apa saja (PILIH nilai Dari ujian Dimana mata pelajaran = 'Aritmatika' dan nama = 'Zhang San')"
rs2.Buka SqlStr,sambungan1,1,1
Respon.Tulis "<p>Pecahan apa pun yang lebih tinggi dari aritmatika Zhang San"
Lakukan selagi bukan rs2.EOF
Respon.Tulis "<BR>" & rs2("Nama") & " " & rs2("Subjek") & " Nilai: " & rs2("Nilai")
rs2.PindahBerikutnya
Lingkaran
rs2.Tutup%>
Program ASP di atas rs24.asp menggunakan browser di sisi klien untuk menelusuri hasil eksekusi dan menampilkan catatan yang skornya lebih besar atau sama dengan pecahan aritmatika Zhang San.
Beberapa
Kata kunci SOME dan ANY memiliki arti yang sama, dan digunakan untuk memilih kondisi perbandingan dari setiap record yang cocok dengan subquery. Misalnya pada program ASP rs24.asp adalah sebagai berikut, [SELECT Name, Subject, Score From Exam Where Subject. = 'Aritmatika' dan Skor >= Beberapa (PILIH Skor Dari Ujian Dimana Subjek='Aritmatika' dan Nama='Zhang San')] Temukan catatan yang skornya lebih besar atau sama dengan pecahan aritmatika mana pun dari Zhang San:
<%
Setel koneksi1 = Server.CreateObject("ADODB.Connection")
conn1.Buka "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Setel rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "PILIH nama, mata pelajaran, nilai Dari ujian Dimana mata pelajaran = 'Aritmatika' dan nilai >= Beberapa (PILIH nilai Dari ujian Dimana mata pelajaran = 'Aritmatika' dan nama = 'Zhang San')"
rs2.Buka SqlStr,sambungan1,1,1
Respon.Tulis "<p>Beberapa pecahan lebih tinggi dari aritmatika Zhang San"
Lakukan selagi bukan rs2.EOF
Respon.Tulis "<BR>" & rs2("Nama") & " " & rs2("Subjek") & " Nilai: " & rs2("Nilai")
rs2.PindahBerikutnya
Lingkaran
rs2.Tutup
%>
Program ASP di atas rs24.asp menggunakan browser di sisi klien untuk menelusuri hasil eksekusi dan menampilkan catatan yang skornya lebih besar atau sama dengan pecahan aritmatika Zhang San.
Pilih...Ke
Select...Into akan membuat tabel yang dihasilkan berdasarkan hasil kueri.
Sintaksnya adalah sebagai berikut:
PILIH bidang 1[,bidang 2[, ...]] KE tabel baru[DALAM tabel eksternal]
DARI meja
Nama tabel baru tidak boleh sama dengan nama tabel yang sudah ada, jika tidak maka akan terjadi error.
Tabel baru yang dibuat oleh Select...Into memiliki tipe dan ukuran data bidang yang sama dengan tabel yang ditanyakan.
Mari kita lihat contoh penggunaan perintah SQL ini dalam program ASP.
Misalnya program ASP rs9.asp adalah sebagai berikut, [Select * Into Computer From Product Where Type = 'Computer'] akan menghasilkan tabel [Computer] baru untuk semua record [Type] di tabel [Product] sebagai [Computer ]:
<%
Setel koneksi1 = Server.CreateObject("ADODB.Connection")
conn1.Buka "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
sql = "Pilih * Ke Komputer Dari Produk Dimana Kategori = 'Komputer'"
Setel a = samb1.Jalankan(sql)
Setel rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Pilih * dari komputer"
rs3.Buka sql,sambungan1,1,1,1
%>
<TABEL COLSPAN=8 CELLPADDING=5 BATAS=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Kode</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Nama</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Harga</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Jumlah</FONT></TD>
</TR>
<% Lakukan selagi tidak rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("nama kode")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("name")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("harga")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("kuantitas")%></TD>
</TR>
<%
rs3.MoveNext
Lingkaran
rs3.Tutup
%>
</TABEL>
Program ASP di atas rs9.asp menggunakan browser pada klien untuk menelusuri hasil eksekusi dan menampilkan catatan tabel [Komputer] yang baru.