vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Brauche Hilfe bei einer SQL Anweisung !!!!!?!?!?!?! 
Autor: Backslash
Datum: 03.05.03 15:33

Hi,

das könnte mit einer verschachtelten Select-Abfrage oder UnterSQL-Anweisungen möglich sein.

Auszug:

Eine Unterabfrage ist eine SELECT-Anweisung, die entweder innerhalb einer SELECT-, SELECT...INTO-, INSERT...INTO-, DELETE- oder UPDATE-Anweisung oder innerhalb einer anderen Unterabfrage verschachtelt ist.

Syntax

Eine Unterabfrage kann in drei Syntaxvarianten formuliert werden:

Vergleich [ANY | ALL | SOME] (SQLAnweisung)
Ausdruck [NOT] IN (SQLAnweisung)
[NOT] EXISTS (SQLAnweisung)

Eine Unterabfrage besteht aus folgenden Teilen:

Teil Beschreibung
Vergleich Ein Ausdruck und ein Vergleichsoperator, der den Ausdruck mit den jeweiligen Ergebnissen der Unterabfrage vergleicht.
Ausdruck Ein Ausdruck, nach dem innerhalb der Ergebnismenge der Abfrage gesucht wird.
SQLAnweisung Eine SELECT-Anweisung, die dasselbe Format hat und nach denselben Regeln aufgebaut ist wie jede andere SELECT-Anweisung. Diese Anweisung muß in runde Klammern eingeschlossen sein.
Bemerkungen

Sie können in der Feldliste einer SELECT-Anweisung oder in einem WHERE- oder HAVING-Abschnitt anstelle eines Ausdrucks eine Unterabfrage verwenden. Indem Sie in einer Unterabfrage eine SELECT-Anweisung einsetzen, stellen Sie einen oder mehrere bestimmte Werte bereit, die dann im Ausdruck des zugehörigen WHERE- oder HAVING-Abschnitts ausgewertet werden.
Verwenden Sie das Prädikat ANY oder SOME (bedeutungsgleich), wenn Sie Datensätze aus der Hauptabfrage abrufen möchten, die den Vergleich mit mindestens einem der von der Unterabfrage zurückgegebenen Datensätze erfüllen. Im folgenden Beispiel werden alle Artikel zurückgegeben, deren Einzelpreis ("Einzelpreis") höher ist als der Einzelpreis irgendeines der Artikel, die mit einem Rabatt von 25 Prozent oder mehr verkauft werden:

SELECT * FROM Artikel
WHERE Einzelpreis > ANY
(SELECT Einzelpreis FROM Bestelldetails
WHERE Rabatt >= .25);

Verwenden Sie das Prädikat ALL, wenn Sie nur die Datensätze der Hauptabfrage abrufen möchten, die den Vergleich mit allen von der Unterabfrage abgerufenen Datensätzen erfüllen. Würden Sie im vorangegangenen Beispiel ANY durch ALL ersetzen, so würde die Abfrage nur diejenigen Artikel zurückgeben, deren jeweiliger Einzelpreis höher ist als der aller (auch der teuersten) Produkte, die mit einem Rabatt von 25 Prozent oder mehr verkauft werden. Damit ist diese Abfrage deutlich restriktiver.

Mit dem Prädikat IN rufen Sie nur diejenigen Datensätze der Hauptabfrage ab, für die einige Datensätze der Unterabfrage einen gleichen Wert enthalten. Im folgenden Beispiel werden alle Artikel zurückgegeben, die mit einem Rabatt von 25 Prozent oder mehr verkauft werden:

SELECT * FROM Artikel
WHERE [Artikel-Nr] IN
(SELECT [Artikel-Nr] FROM Bestelldetails
WHERE Rabatt >= .25);

Umgekehrt können Sie NOT IN verwenden, um Datensätze der Hauptabfrage abzurufen, für die kein Datensatz der Unterabfrage einen gleichen Wert enthält.

Mit dem Prädikat EXISTS (und dem optionalen reservierten Wort NOT) in True/False-Vergleichen können Sie herausfinden, ob die jeweilige Abfrage überhaupt Datensätze zurückgibt.

Außerdem können Sie in einer Unterabfrage Alias-Bezeichnungen für Tabellennamen verwenden, um auf Tabellen zu verweisen, die in einem FROM-Abschnitt außerhalb der Unterabfrage angegeben wurden. Das folgende Beispiel liefert die Namen der Angestellten, deren Gehalt größer oder gleich dem Durchschnittsgehalt aller Angestellten ist, die dieselbe Position bekleiden. Die Tabelle "Personal" erhält die Alias-Bezeichnung "T1":

SELECT Nachname,
Vorname, Position, Gehalt
FROM Personal AS T1
WHERE Gehalt >=
(SELECT Avg(Gehalt)
FROM Personal
WHERE T1.Position = Personal.Position) Order by Position;

In diesem Beispiel ist das reservierte Wort AS optional.

Manche Unterabfragen sind in Kreuztabellenabfragen erlaubt (insbesondere als Prädikate im WHERE-Abschnitt). Unterabfragen als Ausgabe (d.h. in der SELECT-Liste angegeben) sind in Kreuztabellenabfragen nicht erlaubt.


alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Brauche Hilfe bei einer SQL Anweisung !!!!!?!?!?!?!96Jay03.05.03 14:44
Re: Brauche Hilfe bei einer SQL Anweisung !!!!!?!?!?!?!635Backslash03.05.03 15:33

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel