Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi nested select? (https://www.delphipraxis.net/22518-nested-select.html)

Löcha 18. Mai 2004 19:10


nested select?
 
Hallo Zusammen,

habe ein kleines Problem,

beim Aufruf einer Select Anweisung bekomme ich den Fehler "Nested Select"

ich habe schon im Forum und im Inet gesucht, aber bis jetzt nichts brauchbares gefunden.
Meine Frage an Euch: Warum kommt der Fehler und wie kann ich ihn korrigieren?

Ich benutze Delphi 5 SP1

BDE komponenten

Quelcode:

Delphi-Quellcode:
  Query.Close;
  Query.SQL.Clear;
  Query.Add("select nut_beg from tabelle where id = 1234 and nut_beg = (select max(nut_beg) from tabelle where id = 1234)");
  Query.Open;
Beim öffnen kommt der Fehler.

Für die Hilfe bin ich im Voraus sehr Dankbar!

[edit=Sharky]Wegen der "Schönheit" die Delphi-Tags eingefügt. Mfg, Sharky[/edit]

mirage228 18. Mai 2004 19:14

Re: nested select?
 
Hi,

ich kenne mich zwar nicht so mit Datenbanken aus (Wieso ist der Post eigentlich in der Multimedia Spalte?),

aber ich schätze mal, dein SQL mach dieses eingenistete ("nested") Select nicht. (Das zweite in der Klammer)

mfG
mirage228

nailor 18. Mai 2004 19:47

Re: nested select?
 
was soll das statement eigentlich machen?

Löcha 18. Mai 2004 19:57

Re: nested select?
 
Das statemant soll aus mehreren Werten den grössten Wert zurückliefern.

ID ist dabei ein Fremdschlüssel...

Robert_G 18. Mai 2004 19:58

Re: nested select?
 
Gar keinen ;)
Da kannst du genauso 1=1 schreiben.

Als ID kennzeichnet man generell Primär schlüssel (eindeutige Felder zur Referenzierung), wenn deine ID eindeutig ist, dürfte das:
SQL-Code:
SELECT nut_beg
FROM  tabelle
WHERE id = 1234 And
       nut_beg = (SELECT Max(nut_beg)
                  FROM  tabelle
                  WHERE id = 1234)
.. das gleiche Ergebnis liefern wie:
SQL-Code:
SELECT nut_beg
FROM  tabelle
WHERE id = 1234
Nachtrag:
Ich habe deinen Post zu spät bemerkt. ;)

Du solltest Foreign keys NIEMALS nur als ID benennen! Du weißt in einer Woche nicht mehr auf den ersten Blick, was gemeint ist.
Zum Problem:
Da du MAX verwendest kann deine Sub query nur einen Datensatz liefern. Es kann also kein Fehler kommen, weil mehrere gefunden wurden.
Du solltest einmal in deiner DB testen, ob MAX eine 0 liefert wenn nichts gefunden wird.
Deine Sub query muss nämlich 1 (genau 1, nicht 2 oder keinen) Datensatz liefern.

p.s.: Ich lasse mich jetzt nicht über das Statement an sich aus. (das geht auch einfacher ;) )

Löcha 18. Mai 2004 20:00

Re: nested select?
 
ID ist der Fremdschlüssel... Sorry habe mich vertan.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 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