![]() |
Datenbank: MS SQL • Version: 2005 • Zugriff über: ADO
SQL Unterabfrage die einen zusammengesetzten Wert zurückgibt
Hallo,
ich habe in einem SQL eine Unterbafrage die mehrere Werte zurückgeben kann. Dies funktioniert nicht. Ist es möglich das die Unterfrage, die mehrere Namen von Kategorien zurückgibt diese alle zu einem großen String zusammenfügt, und dann nur diesen zusammengefügten String an die übergeordnete Query zurückgibt??
SQL-Code:
Quasi so wie in diesem PSeudo Code:
Categeogries = (select Categoryname from tb_domaininvolve, tb_domains where domainid = fk_domainid and fk_issueid = IssueID)
SQL-Code:
Categeogries = While (select Categoryname from tb_domaininvolve, tb_domains where domainid = fk_domainid and fk_issueid = IssueID) <> eof do Return := Return +', ' +Categoryname;
Gruß Marcus |
Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück
Hi,
eine Unterabfrage als Spalte kann immer nur einen Wert zurückgeben. Aber man kann durchaus folgendes machen:
SQL-Code:
select A.spalte1, A.spalte2, B.Spalte1
from tabelle1 A, ( select id, spalte1 from tabelle2 ) B where A.id=B.id |
Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück
Keine Reaktion = Keine Antwort.
|
Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück
@omata: Schade das du deine Antwort wieder rausgenommen hast. Sie war Qualitativ meine ich sehr hochwertig. Da sie sehr komplex war wäre ich erst heute dazugekommen sie genauer durchzusehen und zu verstehen. Ein einfaches copy und paste kommt für mich nicht in Frage.
Gestern und vorgestern hatte ich leider sehr starke Probleme mit meiner Software, so das mir einfach die Zeit fehlte deine Antwort genauer durchzusehen. sorry |
Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück
Zitat:
Vielleicht solltest Du dann demnächst doch einfach per PM Deine Antworten übermitteln. :wall: |
Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück
Ich finde es einfach unhöflich, wenn man keine Antwort erhält. Wenn der Fragende dann hier im Forum online ist und nicht antwortet, dann kann ich schonmal etwas säuerlich reagieren. Immerhin ist es meine Zeit die ich dem Fragenden zur Verfügung stelle, wenn dieser es dann nichtmal für nötig hält eine Reaktion zu zeigen, dann ist für mich auch Schluss.
Das mag ja super gemein sein und mit der PM wäre das ja auch eine Variante, allerdings würde es dann wohl gar keine Antworten mehr meinerseits geben. Wie auch immer ich mag das miteinander und nicht das einseitige Abgreifen von Informationen. Mich interressiert es ja auch ob meine Lösung den erwünschten Erfolg gebracht hat. Wie auch immer... Das was du suchst ist ein GROUP_CONCAT, das gibt es unter MySQL. MSSQL hat diesen traumhaften Befehl leider noch nicht für sich entdeckt. MySQL:
SQL-Code:
MSSQL:
SELECT TRIM(GROUP_CONCAT(' ', categoryname)) AS categeogries
FROM tb_domaininvolve x INNER JOIN tb_domains y ON x.fk_domainid = y.domainid AND x.fk_issueid = y.IssueID
SQL-Code:
EXECUTE ('
DECLARE @bez VARCHAR(1000) DECLARE @result VARCHAR(8000) DECLARE data CURSOR FOR SELECT categoryname FROM tb_domaininvolve x INNER JOIN tb_domains y ON x.fk_domainid = y.domainid AND x.fk_issueid = y.IssueID SET @result = '''' OPEN data FETCH NEXT FROM data INTO @bez WHILE @@FETCH_STATUS = 0 BEGIN SET @result = @result + @bez + '', '' FETCH NEXT FROM data INTO @bez END CLOSE data DEALLOCATE data IF @result <> '''' BEGIN SET @result = SUBSTRING(@result, 1, DATALENGTH(@result)-2) END SELECT @result AS categeogries ') |
Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück
Hallo Omata,
dein MS SQL Code der den MySQL GRPUP_CONCAT Befehl ersetzt funktioniert super :) Nochmal vielen Dank für die Hilfe! Gruß Marcus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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-2025 by Thomas Breitkreuz