Wolfram Language

Subqueries durchführen

Eine sehr leistungsfähige Technik in SQL ist die Verwendung von Unterabfragen, um komplexere Fragen zu den Daten zu stellen. Dieses Beispiel zeigt, wie einfach es ist, korrelierte und unkorrelierte Subqueries durch Verschachtelung der EntityFunction zu erzeugen.

Registrieren Sie eine Beispieldatenbank mit einer komplexen Tabellenstruktur.

Angenommen, man wollte sich Produkte ansehen, die nahe am maximalen Produktpreis liegen. Man könnte versucht sein, sich zuerst den maximalen Produktpreis anzusehen, indem man eine Aggregation durchführt, um das Ergebnis dann in einer Abfrage zu verwenden.

Das Problem bei diesem Ansatz besteht darin, dass bei zwei Abfragen ein anderer Benutzer der Datenbank die Produktpreise ohne Vorwarnung ändert und Ihre Ergebnisse beeinflusst werden.

Eine gängige Lösung für dieses Problem ist es, diese Vor-Berechnungen inline durchzuführen, so dass sie in einer einzigen Transaktion erfolgen.

Derselbe Ausdruck erscheint nun im Körper des EntityFunction-Ausdrucks, so dass sichergestellt ist, dass er von der Datenbank ausgewertet wird.

Ein weiteres häufiges Muster, das in SQL verwendet wird, ist das, was allgemein als korrelierte Subqueries bezeichnet wird. In der funktionalen Programmierung wäre dies gleichbedeutend mit verschachtelten reinen Funktionen, bei denen die inneren Funktionen von den Parametern der äußeren abhängen. Konstruieren Sie ein solches Beispiel Schritt für Schritt.

Die Frage, die Sie zu beantworten versuchen, ist: Welche Produkte haben die meisten Produkte innerhalb einer Preisspanne von 15 US-Dollar? Erstellen Sie zuerst einen FilteredEntityClass-Ausdruck, der die Produkte mit einem Preis innerhalb von 15 USD eines Wertpreises price repräsentiert.

Zählen Sie diese Produkte mithilfe der Eigenschaft "EntityCount".

Nun können Sie diese als neue Eigenschaft in die Produktklasse aufnehmen.

Da Sie den Wert von price auf 100 festgelegt haben, gibt diese Abfrage für alle Entitäten in "products" tatsächlich denselben Wert von 28 zurück.

Wenn Sie möchten, dass die Abfrage verschiedene Werte zurückgibt, muss der Wert des Preises von der äußeren EntityFunction abhängen.

Wie Sie sehen können, haben Sie jetzt zwei verschachtelte EntityFunction-Ausdrücke, und der Körper des innersten enthält beide Parameter.

Sie können überprüfen, ob Sie für jedes Produkt unterschiedliche Ergebnisse erhalten.

Erhalten Sie nun ein umfassenderes Ergebnis, indem Sie diese neu erstellte Eigenschaft zum Sortieren der Ergebnisse verwenden.

Verwandte Beispiele

en es fr ja ko pt-br zh