In einer Spalte die Werte aus einer anderen Tabelle

03/02/2010 - 16:52 von Michael Kolowicz | Report spam
Hallo,

wir haben gerade ein sehr verzwicktes Problem und stehen irgenwie auf der
Leitung. Vielleicht kann ja jemand mal helfen ;-)

Umgebung:
wir haben auf SQL-2005 Express in einer Datenbank zwei Tabellen. Diese
sehen wie folgt aus und folgende Werte:

Kunden
ID
1
2
3

Namen
ID KundenID NamensTyp Wert
1 1 2 Peter
2 1 2 Klaus
3 1 3 Schmidt
4 2 3 Müller

(Bemerkung: Typ 2 = Vornamen und Typ 3 = Nachnamen)

Nun wollen wir eine Tabelle/View haben, die dann wie folgt aussehen soll

Kundenliste
ID Vorname Nachname
1 Peter Klaus Schmidt
2 Müller

OK - zugegeben, das Beispiel ist "blöd". Aber es geht hier um die
technik. Wenn ich hier die Echtdaten gehabt hàtte, wàre es komplizierter
geworden - glaubt mir

Also die Frage: Geht so was mit T-SQL Commands?

Vielen Dank im Vorraus
Micahel
 

Lesen sie die antworten

#1 Christoph Ingenhaag
03/02/2010 - 18:24 | Warnen spam
Hi Michael,

geht alles ;-)

Zum Beispiel so:


begin try drop table #Kunden, #Namen end try begin catch end catch

create table #Kunden(ID int)
insert into #Kunden
select 1 union all
select 2 union all
select 3

create table #Namen(ID int, KundenID int, NamensTyp int, Wert varchar(50))
insert into #Namen
select 1, 1, 2, 'Peter' union all
select 2, 1, 2, 'Klaus' union all
select 3, 1, 3, 'Schmidt' union all
select 4, 2, 3, 'Müller'


select
k.ID
,substring(v.vorname, 2, 2147483647) as vorname
,n.nachname
from #Kunden k
cross apply
(
select
',' + Wert
from #Namen n
where
n.KundenID = k.ID and
n.NamensTyp = 2
order by
NamensTyp
for xml path('')
) v(vorname)
cross apply
(
select
Wert
from #Namen n
where
n.KundenID = k.ID and
n.NamensTyp = 3
) n(nachname)


Viele Grüße
Christoph

"Michael Kolowicz" schrieb im Newsbeitrag
news:
Hallo,

wir haben gerade ein sehr verzwicktes Problem und stehen irgenwie auf der
Leitung. Vielleicht kann ja jemand mal helfen ;-)

Umgebung:
wir haben auf SQL-2005 Express in einer Datenbank zwei Tabellen. Diese
sehen wie folgt aus und folgende Werte:

Kunden
ID
1
2
3

Namen
ID KundenID NamensTyp Wert
1 1 2 Peter
2 1 2 Klaus
3 1 3 Schmidt
4 2 3 Müller

(Bemerkung: Typ 2 = Vornamen und Typ 3 = Nachnamen)

Nun wollen wir eine Tabelle/View haben, die dann wie folgt aussehen soll

Kundenliste
ID Vorname Nachname
1 Peter Klaus Schmidt
2 Müller

OK - zugegeben, das Beispiel ist "blöd". Aber es geht hier um die
technik. Wenn ich hier die Echtdaten gehabt hàtte, wàre es komplizierter
geworden - glaubt mir

Also die Frage: Geht so was mit T-SQL Commands?

Vielen Dank im Vorraus
Micahel

Ähnliche fragen