Hilfe mit SQL...

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/hilfe-mit-sql_239609/page_1 - zur Vollversion wechseln!


Umlüx schrieb am 07.07.2014 um 16:32

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 schrieb am 07.07.2014 um 16:43

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 schrieb am 07.07.2014 um 16:48

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 schrieb am 07.07.2014 um 16:51

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 schrieb am 07.07.2014 um 17:08

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 schrieb am 07.07.2014 um 17:31

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.)


Umlüx schrieb am 08.07.2014 um 07:46

das müssen sich die stammdatenabteilung überlegen.
auf jedenfall danke soweit ;)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025