Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Interbase - Subquery mit zurückgegebener Zeile (https://www.delphipraxis.net/11576-interbase-subquery-mit-zurueckgegebener-zeile.html)

r_kerber 10. Nov 2003 07:33


Interbase - Subquery mit zurückgegebener Zeile
 
Hallöchen,

kann Interbase 6.5 keine SubQueries, die eine Zeile als Antwort zurückgeben?
SQL-Code:
select name, vorname, plz
from mitarbeiter
where (plz, strasse) = (select plz, strasse
                from kunde
                where kundennummer = 2)

MrSpock 10. Nov 2003 07:43

Re: Interbase - Subquery mit zurückgegebener Zeile
 
Hallo r_kerber,

doch, aber anders :mrgreen: :

SQL-Code:
select name, vorname, plz
from mitarbeiter
where (plz || strasse) = (select plz || strasse
                from kunde
                where kundennummer = 2)

r_kerber 10. Nov 2003 07:47

Re: Interbase - Subquery mit zurückgegebener Zeile
 
Hallo Spocky,

vielen Dank. Ist das SQL-Standard?

MrSpock 10. Nov 2003 09:24

Re: Interbase - Subquery mit zurückgegebener Zeile
 
Hallo r_kerber,

der Zusammenfügungsoperator || ist standard. Es ist ein wenig anders als deine Abfrage, weil ja hier der Feldtyp immer in "String" umgewandelt wird und dann mit dem anderen Feld zu einem String zusammengefügt wird. Wenn es möglich wäre, dass durch das Konkatenieren ein Ergebnis gleich ist, ohne dass di einzelnenFelder gleich sind, muss es noch etwas anders aussehen. Beispiel:
Vorname1 = Hans Peter Nachname1 = Schmidt, Vorname 2 = Hans, Nachname2 = Peter Schmidt.

OK, ist vielleicht kein sehr gutes Beispiel, aber Vorname || Nachname wäre gleich, obwohl es hier zwei unterschiedliche Einträge sind. In diesem Fall wäre es sinnvoller:

SQL-Code:
SELECT Vorname || '#' || Nachname ...

r_kerber 10. Nov 2003 09:57

Re: Interbase - Subquery mit zurückgegebener Zeile
 
Hallo MrSpock,

ich habe beide SQL-Statements testen lassen: Mimer SQL-92 Validator. Ergebnis: meine Variante ist Full SQL-92 und Deine Transitional SQL-92 (also übergangsweise bzw. vorrübergehend). Interessanterweise ist meine Variante bei SQL-99 nicht mehr zugelassen.

MrSpock 10. Nov 2003 10:31

Re: Interbase - Subquery mit zurückgegebener Zeile
 
Hallo r_kerber,

ist eine sehr interessante Seite. Woher weißt du, dass deine Anweisung nicht mehr SQL-99 kompatibel ist? Wie sieht es mit meiner aus, ist die denn in SQL-99 noch erlaubt? Außerdem würde mich interessieren, warum meine Anweisung nur Transitional und nicht Full compatible ist!?

r_kerber 10. Nov 2003 10:34

Re: Interbase - Subquery mit zurückgegebener Zeile
 
Hallo MrSpock,

es gibt dort auch einen SQL-92-Validator. Und der sagt zu Deiner Variante Conforms to Core SQL-99 und zu meiner The following feature outside Core SQL-99 is used: F641, "Row and table constructors".


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