![]() |
Datenbank: SQL-Server • Version: 2008 • Zugriff über: SQL Server Management Studio
Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELECT?
Hi Leute,
ich arbeite mich gerade durch den Kurs "An Introduction to Transact-SQL in Microsoft® SQL Server® 2008" Unter "Control-of-Flow Language Elements" gibt es folgenden Beispielcode:
SQL-Code:
Wie Ihr seht wird überprüft ob der Durchschnittspreis der Produkte unter $300 liegt. Außerdem bricht die if-Bedingung die Schleife ab, falls ein Preis die Marke von $500 überschreitet. Aber was soll die Zeile "SELECT MAX(ListPrice) FROM Production.Product" bewirken? Ich meine der gleiche Befehl wird doch in der IF-Anweisung abgefragt, oder?
USE AdventureWorks;
GO WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300 BEGIN UPDATE Production.Product SET ListPrice = ListPrice * 2 SELECT MAX(ListPrice) FROM Production.Product IF (SELECT MAX(ListPrice) FROM Production.Product) > $500 BREAK ELSE CONTINUE END PRINT 'Too much for the market to bear'; Wie gesagt, ich will nur sicher gehen das ich das richtig verstanden habe... |
Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE
Es wird der maximale Listenpreis ermittelt
|
Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE
Zitat:
|
Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE
Genau hinschauen: einmal MAX, einmal AVG. Jürgen
|
Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE
Zitat:
Diese Zeilen sind gemeint:
SQL-Code:
SELECT MAX(ListPrice) FROM Production.Product
IF (SELECT MAX(ListPrice) FROM Production.Product) > $500 |
Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE
Genau. Die Frage ist warum
SQL-Code:
abgefragt wird bevor die gleiche abfrage auch in der if-Abfrage danach steht
SELECT MAX(ListPrice) FROM Production.Product
SQL-Code:
Ich denke mal das die Zeile einfach nur unnötig ist, wollte aber noch einmal nachfragen, da ich bis jetzt nur in firebird programmiert habe und von MS-SQL keine Ahnung hab...
IF (SELECT MAX(ListPrice) FROM Production.Product) > $500
|
Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE
Hallo,
kann es sein, dass diese "überflüssige" Abfrage einfach der Rückgabewert der Funktion ist? Geuß xaromz |
Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE
Soll an dieser Stelle vielleicht einfach nur der aktuelle höchste Preis ausgegeben werden?
|
Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE
Also ist ein SELECT-Befehl in eine if-Abfrage nur temporär und um eine "echte" Änderung an der Query vorzunehmen wird zuvor ein "richtiger" SELECT Befehl ausgeführt damit die Funktion den gewünschten Rückgabewert bekommt.
Hmmm, das macht Sinn... Ich werde es mal ausprobieren wenn ich meine Testdatenbank zusammen hab... Danke :wink: |
Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE
Zitat:
In Firebird kann das Ergebnis des "einsamen" SELECT in eine Variable eingetragen werden und im folgenden IF geprüft werden. So etwas sollte in Transact-SQL eigentlich auch möglich sein. Aber ob es hier darum geht? Da ich aber das Problem nicht erkannt hatte, mich mit MS-SQL nicht auskenne und in der MSDN nichts dazu gefunden habe, halte ich mich doch lieber raus. Jürgen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz