AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELECT?
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELECT?

Ein Thema von dust258 · begonnen am 5. Okt 2009 · letzter Beitrag vom 5. Okt 2009
Antwort Antwort
Seite 1 von 2  1 2      
dust258

Registriert seit: 18. Aug 2008
62 Beiträge
 
#1

Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELECT?

  Alt 5. Okt 2009, 11:04
Datenbank: SQL-Server • Version: 2008 • Zugriff über: SQL Server Management Studio
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:
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 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?

Wie gesagt, ich will nur sicher gehen das ich das richtig verstanden habe...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE

  Alt 5. Okt 2009, 11:08
Es wird der maximale Listenpreis ermittelt
Markus Kinzler
  Mit Zitat antworten Zitat
Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
113 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE

  Alt 5. Okt 2009, 11:34
Zitat von mkinzler:
Es wird der maximale Listenpreis ermittelt
Das hatte der TE wohl schon verstanden....
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#4

Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE

  Alt 5. Okt 2009, 11:50
Genau hinschauen: einmal MAX, einmal AVG. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE

  Alt 5. Okt 2009, 11:55
Zitat von Jürgen Thomas:
Genau hinschauen: ...
Wo Du's gerade sagst...

Diese Zeilen sind gemeint:

SQL-Code:
   SELECT MAX(ListPrice) FROM Production.Product
   IF (SELECT MAX(ListPrice) FROM Production.Product) > $500
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
dust258

Registriert seit: 18. Aug 2008
62 Beiträge
 
#6

Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE

  Alt 5. Okt 2009, 12:07
Genau. Die Frage ist warum

SELECT MAX(ListPrice) FROM Production.Product abgefragt wird bevor die gleiche abfrage auch in der if-Abfrage danach steht

IF (SELECT MAX(ListPrice) FROM Production.Product) > $500 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...
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE

  Alt 5. Okt 2009, 12:11
Hallo,

kann es sein, dass diese "überflüssige" Abfrage einfach der Rückgabewert der Funktion ist?

Geuß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE

  Alt 5. Okt 2009, 12:13
Soll an dieser Stelle vielleicht einfach nur der aktuelle höchste Preis ausgegeben werden?
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
dust258

Registriert seit: 18. Aug 2008
62 Beiträge
 
#9

Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE

  Alt 5. Okt 2009, 12:22
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
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#10

Re: Frage zu Microsoft Transact-SQL Kurs: SELECT vor if-SELE

  Alt 5. Okt 2009, 12:30
Zitat von Christian Seehase:
Zitat von Jürgen Thomas:
Genau hinschauen: ...
Wo Du's gerade sagst...


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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz