Hilfe mit SQL...
Umlüx 07.07.2014 - 16:32 2058 6
Umlüx
Huge Metal Fan
|
Ich steh grad am schlauch bei einem query.. ich hab 2 tabellen. eine mit kundennamen und adressen, eine mit fax telefonnummern und will die beiden nun per spalte ID joinen. klingt einfach... nun ist die 2. tabelle aber so aufgebaut: ID Typ NR
1 fax 12345
1 tel 67890
wie schreib ich ein select dass mir dafür einfach 2 spalten in der zieltabelle erzeugt?  (edit: es geht um oracle)
|
TheHackman
48°12'N 16°19'E
|
müsste nicht ein einfacher inner join reichen? der würde alle rows ausgeben beim select wo die join-bedingung (tab1.id = tab2.id) zutrifft. SELECT * FROM TAB1
INNER JOIN TAB2
ON tab2.id = tab1.id
(WHERE XY)
|
Umlüx
Huge Metal Fan
|
dann habe ich aber für jede person die sowohl fax als auch telefonnummer hat 2 zeilen. ich hätts aber gerne in einer zeile.
|
Spikx
My Little Pwny
|
SELECT c.name, c.address,
( SELECT NR FROM telfax WHERE ID = c.id AND Type = 'tel' ) AS tel,
( SELECT NR FROM telfax WHERE ID = c.id AND Type = 'fax' ) AS fax
FROM customers AS c
Funktioniert aber nur, wenn tatsächlich immer nur ein 'tel' und ein 'fax' Eintrag pro Kunde in der Tabelle ist.
|
Umlüx
Huge Metal Fan
|
und da wird der fehler liegen.. danke Spikx auf die weise hab ichs schon versucht und es hat nicht funktioniert. hatte es erst auf die syntax geschoben...
scheinbar gibts zu mehreren kunden mehrere telefonnummern obwohl es nur eine geben dürfte. jetzt muss ich mir irgendwas dazu überlegen....
|
Spikx
My Little Pwny
|
und da wird der fehler liegen.. danke Spikx auf die weise hab ichs schon versucht und es hat nicht funktioniert. hatte es erst auf die syntax geschoben...
scheinbar gibts zu mehreren kunden mehrere telefonnummern obwohl es nur eine geben dürfte. jetzt muss ich mir irgendwas dazu überlegen.... Mja da wird's jetzt blöd  . Vor allem weil ja sicher nicht eindeutig definiert werden kann, welche genommen werden soll. Prinizpiell kannst du das ja mit einem GROUP BY ID umgehen. Dann wird halt die Erste genommen, die in der Datenbank vorkommt. (Oder Letzte? By GROUP BY bin ich mir nie sicher, was SQL by default macht.)
Bearbeitet von Spikx am 07.07.2014, 17:34
|
Umlüx
Huge Metal Fan
|
das müssen sich die stammdatenabteilung überlegen. auf jedenfall danke soweit
|