ostpower Geschrieben 18. April 2008 Geschrieben 18. April 2008 ich habe 2 spalten in denen ortsangaben in ID-Form vorliegen, also z.b. 1234 für Berlin, 6357 für frankfurt etc. So jetzt ist die 1. Spalte der startort und die 2.spalte der ziel ort. mit einer zwischentabelle kann ich die zahlen als ortsnamen anzeigen lassen. allerdings hab ich jetzt ein problem beide spalten zu "entschlüsseln" Also das sieht so aus: Start____Ziel 3526____6265 2635____2276 2933____3336 1233____8236 2132____2337 Zwischentabelle: ID____NAME 3526__Berlin 3336__Frankfurt . . . So jetzt hab ich das statement: SELECT t.start,t.ziel,z.name FROM tabelle t,zwischentabelle z WHERE t.start = z.ID So damit wird die 1. spalte (start) als name ausgeben, aber wenn ich jetzt die 2.spalte auch als namen angegeben haben möchte, wie muss dass denn aussehn? also die tabelle soll dann in etwas so aussehn: Start____Ziel____OrtStart____Ortziel 3526____6265___Frankf______Berln 2635____2276___etc.... 2933____3336 1233____8236 2132____2337
Reinhold Geschrieben 18. April 2008 Geschrieben 18. April 2008 Moin, So jetzt hab ich das statement: SELECT t.start,t.ziel,z.name FROM tabelle t,zwischentabelle z WHERE t.start = z.ID ... Start____Ziel____OrtStart____Ortziel 3526____6265___Frankf______Berln 2635____2276___etc.... 2933____3336 1233____8236 2132____2337 ich nehme an du meinst: SELECT t.start,t.ziel, z1.name as ortstart, z2.name as ortziel FROM tabelle t,zwischentabelle z1, zwischentabelle z2 WHERE t.start = z1.ID and t.ziel = z2.ID Reinhold
ostpower Geschrieben 21. April 2008 Autor Geschrieben 21. April 2008 Ja aber ich hab keine 2 zwischentabellen, ich hab eine zwischentabelle mit der ich die orts-nummern als name identifizieren kann
Ratzinger Geschrieben 21. April 2008 Geschrieben 21. April 2008 Einfach und verständlich über Subselects SELECT t.start,t.ziel, (SELECT z.name FROM zwischentabelle z WHERE z.ID = t.start) as ortstart, (SELECT z.name FROM zwischentabelle z WHERE z.ID = t.ziel) as ortziel FROM tabelle t
TDM Geschrieben 21. April 2008 Geschrieben 21. April 2008 Subselect ist wäre sicher etwas langsamer... SELECT tabStart.NAME, tabEnd.NAME FROM t INNER JOIN zwischenTabelle AS tabStart ON (zwischenTabelle.ID = t.start) INNER JOIN zwischenTabelle AS tabEND ON (zwischenTabelle.ID = t.end)
Ratzinger Geschrieben 21. April 2008 Geschrieben 21. April 2008 Ja das mit Sicherheit, aber nachdem er sich anscheinend nicht so gut mit SQL auskennt wollte ich eine Lösung bieten die er auch versteht und ich finde das ein Subselect einfacher zu verstehen ist! Performance mäßig ist mit Sicherheit der Join besser!
ostpower Geschrieben 21. April 2008 Autor Geschrieben 21. April 2008 Ehm ich hätte eine neues anders problem bzw. frage: Und zwar hab ich in 2 tabellen folgende spaltenkombinationen tabelle1 spalte1____spalte2 7134______5189 1234______3317 tabelle2 spalte1____spalte2 7134______3317 1234______5189 wenn ich jetzt in nem select die bedingung hab: where t1.s1 = t2.s1 and t1.s2 = t2.s2 dann würde der ja bei den angegebenen daten beide datensätze als ergebnis ausgeben. Ich möchte allerdings nur die genau kombinationen angezeigt bekommen, also z.b. nur die datensätze aus tabelle1 wo s1 = 7134 und s2=3317 is. Also mit der bedingung, die ich such, dürfte bei den angegebenen daten keins als result zurückgegeben werden.
Ratzinger Geschrieben 21. April 2008 Geschrieben 21. April 2008 weis schon was du meinst! SELECT t1.s1, t2.s1 from tabelle1 t1 JOIN tabelle2 t2 ON t1.s1 = t2.s1 and t1.s2 = t2.s2 das sollte dein Problem lösen
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden