![]() |
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. |
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' |
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. |
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 |
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. |
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:
Ich hoffe, das hilft dir weiter.
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 Grüße Mikhal |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz