Kai: Problem mit Abfrage aus 2 Tabellen

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

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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. 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