Veröffentlicht 18. April 200817 j 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
18. April 200817 j 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
21. April 200817 j Autor Ja aber ich hab keine 2 zwischentabellen, ich hab eine zwischentabelle mit der ich die orts-nummern als name identifizieren kann
21. April 200817 j 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
21. April 200817 j 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)
21. April 200817 j 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!
21. April 200817 j Autor 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.
21. April 200817 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.