Dalam proses pengembangan sebenarnya, kita sering menghadapi beberapa query atau informasi sub-tabel statistik. Untuk satu level pemrosesan, itu relatif sederhana. Jika ada dua level, tiga level, dll atau lebih, kondisi yang ditulis saat ini akan menjadi lebih kompleks dan rentan terhadap kesalahan penulisan. Selain menyediakan fungsi operasi perbandingan yang fleksibel, objek bidang SQL Artisan juga menyediakan fungsi bersarang kondisi tingkat N dalam metode In objek, memungkinkan Anda menjadi lebih fleksibel dalam menyusun kondisi kueri.
Ambil NorthWind MSSQL sebagai contoh:
kueri jumlah penjualan karyawan tertentu selama periode waktu tertentu.
Tabel yang diproses: Karyawan, Pesanan, Detail Pesanan.
Selama proses implementasi, Anda dapat melakukan kueri melalui asosiasi tabel atau langsung menanyakan tabel target. Untuk langsung menanyakan tabel target, Anda harus menambahkan kondisi tabel induk ke kondisi kueri saat ini cara bersarang.
Employee.Employee->Orders.OrderDate->Sum(Order Details) membuat kondisi terbalik bersarang.
Berikut ini adalah implementasi dari dua metode kueri pada pernyataan SQL dan komponen SQL Artisa.
(Kode ini hanya digunakan untuk mengekspresikan fungsi komponen SQL Artisan, dan masalah lain yang ada dalam pernyataan SQL itu sendiri tidak akan dibahas)
Metode SQL satu:
SELECT Sum(UnitPrice*Quantity*(1-Discount)) FROM Employees INNER GABUNG Pesanan PADA Employees.EmployeeID= Pesanan.EmployeeID INNER GABUNG [Rincian Pesanan] PADA Pesanan.OrderID=[Rincian Pesanan].OrderID di mana ( ( Employees.EmployeeID = 3 Dan Pesanan.OrderDate >= '1997-7-1' ) Dan Pesanan.TanggalPesanan <= '1997 -8-1')
Metode SQL Artisan satu:
query = session.CreateQuery(Employees.TBL.INNER(Orders.TBL,Orders._EmployeeID)&
Orders.TBL.INNER
(OrderDetails.TBL,Orders._OrderID));
{SqlMath.Sum(OrderDetails._UnitPrice*OrderDetails._Quantity*(1-OrderDetails._Discount))};
query.Expreesion = Karyawan._EmployeeID.At(Employees.TBL) ==3 &
Pesanan._OrderDate.At(Orders.TBL) ) >= DateTime.Parse("1997-7-1")&
Pesanan._OrderDate.At(Orders.TBL) <= DateTime.Parse("1997-8-1");
ds = query.ExecuteDataSet()
; Metode 2:
PILIH Jumlah(Harga Satuan*Jumlah*(1-Diskon)) DARI [Rincian Pesanan] di mana ID Pesanan masuk (pilih ID Pesanan dari Pesanan di mana ( ( Tanggal Pesanan >= '1997-7-1'Dan Tanggal Pesanan < '1997-8 -1' ) Dan EmployeeID di (pilih EmployeeID dari Employees dimana ( EmployeeID = 3 )) ) ))
Metode SQL Artisan dua:
kueri IQuery = session.CreateQuery(OrderDetails.TBL);
query.Selects= new FieldAdapter[]{SqlMath.Sum(OrderDetails._UnitPrice*OrderDetails._Quantity*(1-OrderDetails._Discount))}
; Expreesion = OrderDetails._OrderID.In(Orders.TBL,Orders._OrderID,
Orders._OrderDate >= DateTime.Parse("1997-7-1") &
Pesanan._OrderDate < DateTime.Parse("1997-8-1") &
Pesanan._EmployeeID.In(Employees.TBL,Employees._EmployeeID,Employees._EmployeeID ==3));
System.Data.DataSet ds = query.ExecuteDataSet();
Dari kode di atas, Anda dapat melihat bahwa komponen SQL Artisan dengan mudah dan fleksibel menyarangkan kondisi multi-level melalui metode In pada objek bidang. Bukan ide yang buruk bagi pengembang untuk menggunakan string untuk mengeja pernyataan SQL saat menulis pernyataan yang rumit tersebut kondisi kueri. Dream, tetapi juga sangat memusingkan untuk memeriksa keabsahannya secara manual, belum lagi sering kali kita harus menghadapi kondisi kueri yang lebih kompleks.
Apa yang dihadirkan SQL Artisan kepada Anda adalah cara penulisan kondisi yang sepenuhnya berbasis objek dan menyediakan kompilasi dan pengujian lingkungan pengembangan, yang sangat meningkatkan efisiensi dan kualitas kondisi penulisan.
, pernyataan SQL dari dua metode SQL disadap dengan menjalankan metode SQL Artisan.