Anton Brass: Verzwickte Datenbank-Situation

So ich muss erstmal vorweg erklären worum es geht! :-)

Ich habe ein Produkt das einem FahrzeugModell oder einer FahrzeugModellGruppe zugewießen wird. Eine FahrzeugModellGruppe besteht aus mehreren FahrzeugModellen.

Ich will jetzt alle Produkte des Modells X Selecten und auch gleichzeitig alle Produkte, die einer ModellGruppe zugewießen sind, welche dieses spezifische Modell X beinhaltet.

Und das alles in einer Select-Anweisung.

Anbei habe ich eine vereinfachtes Bild der Datenbank.

Bis jetzt habe ich es mit InnerJoins probiert, musste aber feststellen, dass diese nicht beliebig erweiterbar sind. D.h. dass alle ON-Bedingungen erfüllt sein müssen. Theoretisch bräuchte ich eine virtuelle Tabelle, wo ich alle Produkte des Modell X reinwerfe, gleichzeitig aber auch alle Produkte die mit dem Modell X zu tun haben.

Wichtig hierbei ist, dass ich das in einer SELECT-Anweisung mache, weil ich sonst kein Limit benutzen kann.

Irgendwelche Ideen oder Überlegungen?

  1. hi!

    ich hoffe ich habe deine anforderung richtig verstanden...

    bis jetzt würd ich mal in diese richtung gehen:
    1. Statement:
    SELECT Modell_id.Produkt, Modell_Gruppe_id.Produkt FROM Produkt WHERE Produkt_id == X
    //Nun habe ich die ID-Nummern aller Modelle ($modelle) und Modellgruppen ($modellgruppen)

    2. Statement:
    SELECT Modell_PNummer.Modell, Modell_Gruppe_PNummer FROM Modell, Modell_Gruppe WHERE Modell_id.Modell = $modell AND Modell_Gruppe_id = $modellgruppe

    lg,
    der-doktor

  2. Ok Leute, ich habs denke ich:

    SELECT * FROM (Produkt p Join Modell m) JOIN r_Modell_Gruppe_Modell rmg WHERE (Marke_id=$VALUE AND m.Modell_id=p.Modell_id) OR (Marke_id=$VALUE m AND p.Modell_Gruppe_id=rmg.Modell_Gruppe_id AND rmg.Modell_id=m.Modell_id) Group By Produkt_id

    Erst Multiplziere ich die 3 wichtigen Tabellen, sage dann an welche Bedingungen ich haben will und gruppiere dann den Mist nach der Produkt_id.

    Trotzdem Danke für eventuelle Gedanken.

    1. yo,

      Ok Leute, ich habs denke ich:

      leider nein. die ausgabe aller spalten und die gruppierung passen nicht zueinander. mysql gibt da leider keine fehlermeldung.

      Ilja