ich einige Anfragen an die Datenbank zu machen genannt: Nordwind, der beweist, zur Verfügung zu stellen, wenn Sie es von der offiziellen Website herunterladen, führte ich die folgende Abfrage:Wie verarbeitet SQL Server die folgende Abfrage?
SELECT C.CategoryName NAME,
P.CATEGORYID CODE,
COUNT(*) 'PIECES',
SUM(UnitPrice*UnitsInStock) 'AMOUNT'
FROM
Northwind.dbo.Categories C, Northwind.dbo.[products] P
WHERE
P.CategoryID = C.CategoryID
AND
P.CategoryID>2
GROUP BY
P.CategoryID, C.CategoryName
HAVING SUM(UnitPrice*UnitsInStock)>10000
ORDER BY 'AMOUNT' DESC;
Die Abfrage mir die richtigen Ergebnisse schenken :
NAME CODE PIECES AMOUNT
--------------- ----------- ----------- ---------------------
Seafood 8 12 13010.35
Dairy Products 4 10 11271.20
Confections 3 13 10392.20
Tatsache ist, dass ich nicht herausfinden kann, wie funktioniert SQL Server die Abfrage berechnen, da viele Operationen beteiligt sind, in einem gewissen Punkt SQL Server eine temporäre Datenbank zu erzeugen, hat die HAVING
auszuführen:
HAVING SUM(UnitPrice*UnitsInStock)>10000
Ich möchte eine Erklärung über die Reihenfolge erhalten, die SQL Server zur Durchführung der Abfrage nimmt, ich meine, was ist die erste und letzte Operation, die SQL Server neben ich kann nicht herausfinden, wie weiß es, dass hat den Betrieb genannt SUM auf die Tabelle mit dem Namen anzuwenden: Produkte,
SUM(UnitPrice*UnitsInStock) 'AMOUNT'
ich nicht angeben, dass jedoch ist die Berechnung auch den Betrieb, auch die COUNT
für mich sehr zweideutig ist, aber mir das richtige Ergebnis ist zu geben, ich wirklich Ich schätze jede detaillierte Erklärung, wie sie diese Abfrage berechnet, danke für die Unterstützung.
Dank @TheGrameiswar, das war wirklich hilfreich, – neo33
@TheGameriswar, nur eine kurze Frage, ich das Kapitel las und hier sagt, dass die Reihenfolge in was ich die Abfrage Klauseln eingeben, ist ziemlich anders als sie logisch interpretiert werden, und die Abb Was du hier schreibst, ist die logische Reihenfolge, ist das richtig? – neo33
Was Sie intrreted ist richtig – TheGameiswar