SQL Abfrage

Hallo, ich habe folgendes Problem.

Drei Tabellen:

  1. felder
    f_id (PK) | item

1 | titel
2 | name
3 | preis
4 | kategorie

  1. anzeigen
    pf_id (PK) | f_id | a_id | text

1 | 1 | 1 | Buch
2 | 2 | 1 | Peter
3 | 3 | 1 | 5€
4 | 4 | 1 | 1
5 | 1 | 2 | DVD
6 | 2 | 2 | Klaus
7 | 3 | 2 | 15€
8 | 4 | 2 | 2

  1. kategorien
    k_id (PK) | name

1 | Bücher
2 | DVDs

Wie lautet die Abfrage, so dass ich folgendes Ergebnis erhalte

Ergebnistabelle:

a_id | titel | name | preis | kategorie

1 | Buch | Peter| 5€ | Bücher
2 | DVD | Klaus| 15€ | DVDs

Ich bekomme die Abfragen mit den joins nicht auf die Reihe.

Hallo, ich habe folgendes Problem.

  1. anzeigen
    pf_id (PK) | f_id | a_id | text

1 | 1 | 1 | Buch
2 | 2 | 1 | Peter

–> Bist du sicher dass, dein Datenmodel stimmt ? Sollte der FK a_id in der Tabelle „Anzeigen“ nicht k_id heissen und auf den PK in der 3. Tabelle verweisen ?

Ich bekomme die Abfragen mit den joins nicht auf die Reihe.

Das kann ich mir vorstellen …

Dies ist mein Vorschlag (1. in Notepad geschrieben, also ziemlich buggy; 2. Oracle Syntax ich hoffe das Prinzip ist trotzdem verständlich)

select titel.a_id a_id, titel.text titel, name.text name, preis.text preis, k.name kategorie
from
anzeigen titel,
anzeigen name,
anzeigen preis,
anzeigen k,
kategorien,
felder f_titel,
felder f_name,
felder f_preis,
felder f_kategorie
where – join bedingungen
titel.a_id = name.a_id
and titel.a_id = preis.a_id
and titel.a_id = k.a_id
and kategorien.k_id = k.text

and titel.f_id = f_titel.f_id
and name.f_id = f_name.f_id
and preis.f_id = f_preis.f_id
and k.f_id = f_kategorie.f_id

and f_titel.item = ‚titel‘
and f_titel.name = ‚name‘
and f_titel.preis = ‚preis‘
and f_titel.kategorie = ‚kategorie‘

Die Joins auf die Felder Tabelle kann wegfallen, wenn man die ID’s, statt der Namen hart verdrahtet.

Und jetzt alles vergessen und ein vernünftiges Datenmodel bauen:
Was du da konstruierst ist eine Datenbank in der Datenbank.
Vorteil: Hochgradig flexibel … also in etwa genau so flexibel wie jede 08/15 Datenbank.
Nachteil: Selbst die einfachsten Abfragen werden zu Mörderjoins, die niemand schreiben oder debuggen möchte. Ganz abgesehen davon, dass die Performance katastrophal ist, und so moderne Erfindungen wie Indices, Foreign Keys und andere Constraints nicht benutzbar sind.

MfG
Jens