Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL Select von mehreren Tabellen
Brudertac
2012-01-31, 15:29:46
Hallo zusammen,
ich brauch mal eure Hilfe :)
3 Tabellen sind gegeben.
Alle 3 haben die Spalte "Objekt". Über dieses Objekt (zb. eine Nummer)
kann ich in allen 3 Tabellen Daten zu dem Objekt finden.
Allerdings enthalten alle 3 Tabellen unterschiedliche Daten bzw. auch mehrere
Datensätze zum Objekt.
Ein UNION geht also IMHO nicht da die Spalten nicht Identisch sind.
Ausserdem enthalten alle 3 Tabellen eine Spalte "Datum".
Gibt es eine Möglichkeit die Daten dieser 3 Tabellen in einem Ergebniss anzuzeigen OHNE diese Daten zu mixen?
Das Ergebniss sollte einfach nach dem Datum sortiert sein...
Ich hoffe das war verständlich formuliert :)
Danke!!!
Kinman
2012-01-31, 15:58:47
SELECT t1.spalte_1, t1.spalte_2, t2.spalte_1, t3.spalte_1 FROM tabelle_1 AS t1 JOIN tabelle_2 AS t2 ON t1.objekt = t2.objekt JOIN tabelle_3 AS t3 ON t1.objekt = t3.objekt WHERE ... ORDER BY t1.datum;
Mit t1 bis t3 kannst du dann die Tabellen unterscheiden. Alternativ kannst du die Benennung (AS t1) weglassen und den gesamten Tabellennamen hinschreiben.
z.B.: tabelle_1.datum
Du kannst auch die selektierten Spalten benennen.
SELECT t1.datum AS datum_1 ...
lg Kinman
Brudertac
2012-02-01, 11:19:38
Hi Kinman,
vielen Dank für deine Hilfe aber das Ergebnis ist nicht ganz das was ich suche.
Ich geh mal etwas ins Details um das zu erklären:
t1 Spalten und Werte:
ID, Vorname, Nachname
1 , Hans , Müller
t2 Spalten und Werte:
ID, Vorname, Nachname, Telefon
1 , Hans , , 12345
Nach deiner Abfrage erhalte ich als Ergebnis:
1, Hans , Müller , 12345
1, Hans , Müller , 12345
Was ich aber brauche:
1, Hans , Müller ,
1, Hans , , 12345
Die Beispielwerte sind vielleicht etwas blöd aber ich hoffe du siehst was ich meine. :)
Geht sowas überhaupt?
Danke nochmals!
Frucht-Tiger
2012-02-01, 12:45:29
Hi Brudertac,
dieses Ergebnis solltest du mit einem FULL OUTER JOIN bekommen, eine Übersicht über die verschiedenen Join-Typen findest du hier:
http://de.wikibooks.org/wiki/Einführung_in_SQL:_OUTER_JOIN
Probiers mal aus, einfach ein FULL vor den Join schreiben.
Gruß
Frank
Brudertac
2012-02-01, 12:59:46
Hi Frank,
danke. Da bekomme ich aber auch teilweise doppelte Ergebnisse.
(Liegt wohl daran das eine Tabelle mehrere Einträge passend zu "Hans" hat.)
Ich glaub ich habs jetzt aber mit UNION hinbekommen. Bin grad noch am Tüfteln :)
Kinman
2012-02-01, 16:30:08
Keine Chance, die Tabellen mit Keys zu verknüpfen? Und gegen doppelte Ausgaben hilft u.U. DISTINCT. Kann aber ohne genauere Infos, wie das auftritt nicht mehr dazu sagen.
lg Kinman
AtTheDriveIn
2012-02-01, 19:32:57
Hi Kinman,
vielen Dank für deine Hilfe aber das Ergebnis ist nicht ganz das was ich suche.
Ich geh mal etwas ins Details um das zu erklären:
t1 Spalten und Werte:
ID, Vorname, Nachname
1 , Hans , Müller
t2 Spalten und Werte:
ID, Vorname, Nachname, Telefon
1 , Hans , , 12345
Nach deiner Abfrage erhalte ich als Ergebnis:
1, Hans , Müller , 12345
1, Hans , Müller , 12345
Was ich aber brauche:
1, Hans , Müller ,
1, Hans , , 12345
Die Beispielwerte sind vielleicht etwas blöd aber ich hoffe du siehst was ich meine. :)
Geht sowas überhaupt?
Danke nochmals!
Vielleicht habe ich dich falsch verstanden, aber das würde in Oracle gehen
select ID,name,nachname, NULL as Telefon from t1
union
select ID,Name,NULL as nachname,telefon from t2
keine doppelten
select distinct * from
(
//see query above
)
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.