AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Unterabfrage die einen zusammengesetzten Wert zurückgibt
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Unterabfrage die einen zusammengesetzten Wert zurückgibt

Ein Thema von Salomon · begonnen am 14. Apr 2008 · letzter Beitrag vom 21. Apr 2008
Antwort Antwort
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#1

SQL Unterabfrage die einen zusammengesetzten Wert zurückgibt

  Alt 14. Apr 2008, 14:40
Datenbank: MS SQL • Version: 2005 • Zugriff über: ADO
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??

Categeogries = (select Categoryname from tb_domaininvolve, tb_domains where domainid = fk_domainid and fk_issueid = IssueID) Quasi so wie in diesem PSeudo 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
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#2

Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück

  Alt 14. Apr 2008, 14:46
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
Gruß
Norman
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück

  Alt 14. Apr 2008, 20:08
Keine Reaktion = Keine Antwort.
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#4

Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück

  Alt 17. Apr 2008, 07:45
@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
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#5

Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück

  Alt 17. Apr 2008, 08:48
Zitat von omata:
Keine Reaktion = Keine Antwort.
Schade, denn Deine Antwort scheint hilfreich gewesen zu sein. Leider können jetzt - bis auf die vorhergehenden Threadteilnehmer - keine anderen interessierten Leser daran partizipieren.

Vielleicht solltest Du dann demnächst doch einfach per PM Deine Antworten übermitteln.

Robert Wachtel
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück

  Alt 17. Apr 2008, 19:49
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:
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
MSSQL:
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
')
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#7

Re: SQL Unterabfrage die einen zusammengesetzten Wert zurück

  Alt 21. Apr 2008, 09:45
Hallo Omata,
dein MS SQL Code der den MySQL GRPUP_CONCAT Befehl ersetzt funktioniert super

Nochmal vielen Dank für die Hilfe!

Gruß
Marcus
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 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