Problem mit Abfrage aus 2 Tabellen
Kai
- datenbank
Hi...
Habe ein Problem mit einer Datenbank-Abfrage.
Die DB1:
id | w1 | w2 | w3 | w4 | w5 ...
10001 | 1 | 0 | 0 | 1 | 1 ...
10002 | 1 | 1 | 0 | 1 | 1 ...
Die DB2:
w_id | NAME | KOSTEN
w1 | Name1 | Kosten1
w2 | Name2 | Kosten2
w3 | Name3 | Kosten3
w4 | Name4 | Kosten4
w5 | Name5 | Kosten5
Wie kann ich die Abfrage so formulieren, das ich alle Spalten einer ID auslesen kann, die den Wert "1" haben?
Danach soll das ergebnis mit einer While-Schleife aus der "DB2" die jeweiligen Infos zu den Daten aus der "DB1" mit den Werten "1" auslesen und mit einem replace das Template ausgeben.
Das ergebnis sollte so aussehen (bei id "10001"):
Name1 Kosten1
Name4 Kosten4
Name5 Kosten5
Kann mir da einer von euch weiterhelfen? Finde in meinem SQL-Buch keine genaue lösung für das Problem...
Vielen Dank für eure Hilfe
Hi,
Die DB1:
id | w1 | w2 | w3 | w4 | w5 ...
das ist kein sinnvolles DB-Layout. Arbeite mit einer Kreuztabelle.
Kann mir da einer von euch weiterhelfen? Finde in meinem SQL-Buch keine genaue lösung für das Problem...
Für _das_ DB-Layout existiert keine Lösung, die diesen Namen auch verdienen würde.
Cheatah
yo,
Kann mir da einer von euch weiterhelfen? Finde in meinem SQL-Buch keine genaue lösung für das Problem...
wie bereits gesagt, ist das datenbank-layout nicht günstig. aber nicht immer lässt sich daran drehen. versuch mal folgende abfrage:
SELECT t1.id, t2.name, t2.kosten
FROM db1.tabellenname AS t1, db2.tabellenname AS t2
WHERE t1.id = '10001'
AND (t1.w1 = '1' AND t2.w_id='w1' OR
t1.w2 = '1' AND t2.w_id='w2' OR
t1.w3 = '1' AND t2.w_id='w3' OR
t1.w4 = '1' AND t2.w_id='w4' OR
t1.w5 = '1' AND t2.w_id='w5' OR
)
Ilja