Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SELECT verschachteln (https://www.delphipraxis.net/42349-select-verschachteln.html)

Stinger 17. Mär 2005 14:36

Datenbank: MS-SQL Server • Version: 2000 Enterprise Edit • Zugriff über: ka

SELECT verschachteln
 
Wie kann ich folgenden SELECT unter MS-SQL realisieren?

SELECT XY, YX, (SELECT DD FROM T1 WHERE T1.ZT = 'WERTA') AS 'TEST1', (SELECT DD FROM T1 WHERE T1.ZT = 'WERTB') AS 'TEST2' FROM T1

Leider funktioniert das nicht, ich bekomme lediglich eine Fehlermeldung.

bttb930 17. Mär 2005 14:50

Re: SELECT verschachteln
 
die abfrage ist aber ja auch blanker unsinn - wer schreibt denn sowas?

mach erstmal die ' um TEST1 und TEST2 weg.

wenn das nicht geht, dann vielleicht das:

SELECT XY, YX, t2.DD as test1, t3.dd as test2
from t1, t1 as t2, t1 as t3
where T2.ZT = 'WERTA'
and T3.ZT = 'WERTB'

Stinger 17. Mär 2005 17:07

Re: SELECT verschachteln
 
Danke für die schnelle Antwort. Habe versucht die Abfrage im Querie-Analyzer laufen zu lassen. Ich bekomme aber die Fehlermeldung:

Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'T1'.

Irgendwas scheint mit dem T1 AS T2 nicht zu funktionieren.

mikhal 17. Mär 2005 17:27

Re: SELECT verschachteln
 
Hast du auch die richtige Datenbank ausgewählt. Standardmäßig zeigt der Query-Analylizer auf die Datenbank Master. Eventuell uses <Datenbankname> vor das Statement setzen oder <Datenbankname>.dbo.<Tabellenname> in deinem SQL-Statement verwenden.

[edit]obige Behauptung mit der Datenbank Master stimmt nur, wenn der Benutzer SA ist.[/edit]
Grüße
Mikhal

Stinger 17. Mär 2005 17:37

Re: SELECT verschachteln
 
Die Query hat auf die richtige Datenbank gezeigt (hab [DB-Name].[dbo].[Table] verwendet). Der Benutzer ist SA.

PS: Ich greife bei meiner Query auf zwei Tabellen zu die miteinander durch nen LEFT OUTER JOIN verbunden werden. Den T1 AS T2 - Befehl verwende ich aber nur für eine Tabelle. Ich hoffe mal das bringt kein Problem mit sich. Das sieht dann bei mir so aus:

SELECT ... FROM T1 LEFT OUTER JOIN T2 ON T1.FELD = T2.FELD, T2 as T3, T2 AS T4 usw.

mikhal 17. Mär 2005 21:44

Re: SELECT verschachteln
 
Ich habe jetzt mal eine Abfrage auf eine Adressdatenbank formuliert, die deiner Vorlage entspricht. Das Select-Statement greift letztlich auf zwei Tabellen zu:
ADR_ADRESSE mit den Adressdaten sowie STD_POSITION in der Anreden bzw. Titel als Stammdaten hinterlegt sind (FK = STP_ID).

Code:
SELECT
  a.adr_id,
  (SELECT IsNull(STP_BEZEICHNUNG, '')
   FROM ADRESSEN.dbo.STD_POSITION
   WHERE STP_ID = a.ADR_STP_ID_ANREDE) AS Anrede,
  (SELECT IsNull(STP_BEZEICHNUNG, '')
   FROM ADRESSEN.dbo.STD_POSITION
   WHERE STP_ID = a.ADR_STP_ID_TITEL) AS Titel,
  a.ADR_NAME,
  a.ADR_MATCHCODE
FROM ADRESSEN.dbo.ADR_ADRESSE a
Ich hoffe, das hilft dir weiter.

Grüße
Mikhal


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