Im eigentlichen Entwicklungsprozess sind wir häufig mit einigen Abfragen oder statistischen Untertabelleninformationen konfrontiert. Wenn es zwei Ebenen, drei Ebenen usw. oder mehr gibt, werden die Bedingungen zu diesem Zeitpunkt geschrieben komplexer und anfälliger für Schreibfehler sein. Neben der Bereitstellung flexibler Vergleichsoperationsfunktionen bietet das SQL Artisan-Feldobjekt auch N-Level-Bedingungsverschachtelungsfunktionen in der In-Methode des Objekts, sodass Sie beim Erstellen von Abfragebedingungen flexibler sein können.
Nehmen Sie als Beispiel NorthWind von MSSQL:
Fragen Sie den Umsatz eines bestimmten Mitarbeiters während eines bestimmten Zeitraums ab.
Verarbeitete Tabellen: Mitarbeiter, Bestellungen, Bestelldetails
Während des Implementierungsprozesses können Sie eine Abfrage über die Tabellenzuordnung durchführen oder die Zieltabelle direkt abfragen. Sie müssen die Bedingungen der übergeordneten Tabelle zu den aktuellen Abfragebedingungen hinzufügen eine verschachtelte Weise.
Employee.Employee->Orders.OrderDate->Sum(Order Details) führt eine umgekehrte Bedingungsverschachtelung durch.
Das Folgende ist die Implementierung der beiden Abfragemethoden unter SQL-Anweisungen und SQL Artisa-Komponenten.
(Der Code wird nur verwendet, um die Funktionen der SQL Artisan-Komponente auszudrücken, und andere in der SQL-Anweisung selbst vorhandene Probleme werden nicht besprochen.)
SQL-Methode eins:
SELECT Sum(UnitPrice*Quantity*(1-Discount)) FROM Employees INNER JOIN Orders ON Employees.EmployeeID= Orders.EmployeeID INNER JOIN [Order Details] ON Orders.OrderID=[Order Details].OrderID where ( ( Employees.EmployeeID = 3 And Orders.OrderDate >= '1997-7-1' ) And Orders.OrderDate <= '1997 -8-1')
SQL Artisan-Methode eins:
query = session.CreateQuery(Employees.TBL.INNER(Orders.TBL,Orders._EmployeeID)&
Orders.TBL.INNER(OrderDetails.TBL,Orders._OrderID));
query.Selects= new FieldAdapter[] {SqlMath.Sum(OrderDetails._UnitPrice*OrderDetails._Quantity*(1-OrderDetails._Discount))};
query.Expreesion = Employees._EmployeeID.At(Employees.TBL) ==3 &
Orders._OrderDate.At(Orders.TBL ) >= DateTime.Parse("1997-7-1")&
Orders._OrderDate.At(Orders.TBL) <= DateTime.Parse("1997-8-1");
ds = query.ExecuteDataSet()
; Methode 2:
SELECT Sum(UnitPrice*Quantity*(1-Discount)) FROM [Order Details] where OrderID in (select OrderID from Orders where ( ( ( OrderDate >= '1997-7-1'And OrderDate < '1997-8 -1') Und EmployeeID in (wählen Sie EmployeeID aus Employees, wobei (EmployeeID = 3)) ) ))
SQL Artisan-Methode zwei:
IQuery query = 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") &
Orders._OrderDate < DateTime.Parse("1997-8-1") &
Orders._EmployeeID.In(Employees.TBL,Employees._EmployeeID,Employees._EmployeeID ==3));
System.Data.DataSet ds = query.ExecuteDataSet();
Aus dem obigen Code können Sie ersehen, dass die SQL Artisan-Komponente bequem und flexibel mehrstufige Bedingungen über die In-Methode des Feldobjekts verschachtelt. Für Entwickler ist es keine schlechte Idee, beim Schreiben solch umständlicher SQL-Anweisungen Zeichenfolgen zu verwenden Dream, aber es ist auch sehr schwierig, seine Legitimität zu überprüfen; ganz zu schweigen davon, dass wir oft mit komplexeren Abfragebedingungen konfrontiert werden.
SQL Artisan bietet Ihnen eine vollständig objektbasierte Methode zum Schreiben von Bedingungen und ermöglicht das Kompilieren und Testen der Entwicklungsumgebung, was die Effizienz und Qualität des Schreibens von Bedingungen erheblich verbessert.
Tatsächlich werden die SQL-Anweisungen der beiden SQL-Methoden durch Ausführen der SQL Artisan-Methode abgefangen.
.