"We are back" « oc.at

Hilfe mit SQL...

Umlüx 07.07.2014 - 16:32 2058 6
Posts

Umlüx

Huge Metal Fan
Avatar
Registered: Jun 2001
Location: Kärnten
Posts: 9047
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:
Code:
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
Avatar
Registered: Jul 2001
Location: /eu/at/wien
Posts: 2419
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.

Code: SQL
SELECT * FROM TAB1
INNER JOIN TAB2
ON tab2.id = tab1.id
(WHERE XY)

Umlüx

Huge Metal Fan
Avatar
Registered: Jun 2001
Location: Kärnten
Posts: 9047
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
Avatar
Registered: Jan 2002
Location: Scotland
Posts: 13496
Code:
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
Avatar
Registered: Jun 2001
Location: Kärnten
Posts: 9047
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
Avatar
Registered: Jan 2002
Location: Scotland
Posts: 13496
Zitat von Umlüx
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
Avatar
Registered: Jun 2001
Location: Kärnten
Posts: 9047
das müssen sich die stammdatenabteilung überlegen.
auf jedenfall danke soweit ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz