vertracktes Join mit drei beteiligten Tabellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • vertracktes Join mit drei beteiligten Tabellen

    Hab einige Threads durchgeackert aber mein konkretes Problem nicht entdeckt, hoffe ich erzaehle hier was neues.

    Ich muss aus 2 Tabellen Produktnummern heraussuchen die in der ersten Tabelle diverse Eigenschaften besitzen und einer bestimmten Produktkategorie angehoeren, während in der zweiten Tabelle lediglich die Produktkategorie stimmen muss.

    Am Ende sollen die in Frage kommenden Produktnummern sortiert nach Datum ausgegeben werden.


    Beispiel:

    Tabelle 1: Produktnummer, Datum, eigenschaft1,eigenschaft2,eigenschaft3

    Tabelle 2: Produktnummer, Datum

    Tabelle 3: Produktnummer,Produktkategorie (index um die Kategorie zuzordnen)

    Ziel ist es also alle Produktnummern aus Tabelle 1+2 nach Datum sortiert auszugeben wobei in Tabelle 1 Eigenschaft1 und eigenschaft2 was bestimmtes sein muss und in Tabelle 3 alles selected werden kann, hauptsache die Produktkategorie stimmt.

    Um's gleich vorweg zunehmen, JA, Tabelle 1+2 muessen getrennt werden und haben überhaupt nix miteinander zu tun, die restlichen Felder in den jeweiligen tabellen hab ich der Übersicht wegen auch jetzt weggelassen.

    Jetzt erstmal ein einfacher Query wenn nur tabelle 1+3 existieren wuerden:

    PHP-Code:
    SELECT
    tabelle1
    .produktnummer
    FROM
    tabelle1
    RIGHT JOIN tabelle3 
    (tabelle1.produktnummer=tabelle3.produktnummer)
    WHERE 
    tabelle1
    .eigenschaft1='lecker'
    AND tabelle1.eigenschaft2='billig'
    AND tabelle3.produktkategory='tuetensuppen'
    ORDER BY tabelle1.datum DESC 
    Jetzt kommt aber die Tabelle 2 ins Spiel. Hat jemand einen Tipp den Query entsprechend zu vervollstaendigen? Es muss also irgendwie eine zusaetzliche Abfrage rein, so daß die in Frage kommenden produktnummern+datumsangaben aus tabelle 1+2 zusammengeschmissen und sortiert ausgegeben werden letztendens. Natürlich muss auch hier die Produktkategorie vorher eingegrenzt werden die bei den ERgebnissen aus tabelle 1+2 gleich sein soll.

    Die Produktnummern dürfen auch ruhig mehrmals auftauchen im Ergebnis wenn sie in beiden Tabellen existieren.

    Alternativ koennte ich 2 Queries machen und mit nem Array sortieren, aber das erscheint mir ein Umweg zu sein.

    Danke für Tipps, hoffe ich habs halbwegs verstaendlich erklaert.

    Rocco
    Zuletzt geändert von Rocco; 26.12.2003, 16:57.

  • #2
    das schon gelesen?
    http://www.php-resource.de/forum/sho...threadid=28292
    Kissolino.com

    Kommentar


    • #3
      Ja, hab ich, aber entweder ist es zu abstrakt oder ich erkenne nicht den Zusammenhang. Welcher Abschnitt wäre deiner Meinung nach der zu meinem Problem passende?

      Rocco

      Kommentar


      • #4
        Eigentlich kannst Du Dir auch einfach nur die Syntax im Manual durchlesen und wirst die Lösung zu Deiner Aufgabe schnell finden.
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Original geschrieben von MelloPie
          Eigentlich kannst Du Dir auch einfach nur die Syntax im Manual durchlesen und wirst die Lösung zu Deiner Aufgabe schnell finden.
          Eigentlich lese ich mir grundsaetzlich Dokumentation durch bevor ich in einem Forum fragen stelle, aber sie half mir nicht weiter. Wenn das Problem bzw die Loesung so offensichtlich ist, dann wäre ich für einen Ansatz dankbar oder den direkten Verweis zur Dokustelle die ich anscheinend übersehe..

          Rocco

          Kommentar


          • #6
            frage:

            tabelle 3 umfasst zwei spalten. nur eine spalte davon find ich in den anderen tabellen. besser gesagt in beiden.

            die zweite spalte aus der tab3 taucht nirgens auf, oder habe ich die nur übersehen.

            so kann das aus meiner sicht nichts werden.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              die 2. spalte aus tabelle 3 (kategorie) ist nur dazu da um um die produkte nach kategorie zu filtern, mehr nicht.

              Sie ist fuer die die Problemloesung auch nicht notwendig ehrlich gesagt.
              Wir koennen die Tabelle 3 auch einfach weglassen meinetwegen.

              Es geht nur darum aus Tabelle 2 alle produktnummern und aus Tabelle 1 nur Produktnummern mit bestimmten Eigenschaften rauszuholen . Das ganze nach Datum sortiert (datumsfeld gibts in beiden Tabellen).

              greets
              Rocco

              Kommentar


              • #8
                ich kann jetzt mal nur raten.....

                Code:
                SELECT
                    T1.produktnummer
                FROM
                    tabelle3 T3
                        INNER JOIN tabelle1 T1 USING(produktnummer)
                WHERE 
                    T1.eigenschaft1 = 'lecker' AND
                    T1.eigenschaft2 = 'billig' AND
                    T3.produktkategory = 'tuetensuppen'
                ORDER BY
                    T1.Datum DESC
                wenn es das nicht ist, nimm die passenden links und lies noch einmal in ruhe.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar

                Lädt...
                X