Wer dies gekauft hat, hat auch folgendes gekauft

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

  • Wer dies gekauft hat, hat auch folgendes gekauft

    hi allerseits,

    Ich möchte eine typische Amazon Empfehlung ausgeben, sprich:

    Kunden, die Produkt A gekauft haben, haben auch die Produkte K, L und Z gekauft.

    Kann mir im Moment noch keinen Reim darauf machen, wie das funktionieren kann.

    Grds. hab ich ja eine ProduktID und eine UserID, bei jedem Kauf kann ich die ja gemeinsam in einem table speichern...

    Vielleicht habt Ihr ja einmal einen Denkanstoss, oder ein paar Suchbegriffe nach denen ich mal Ausschau halten kann.

    Gruss, Marc

  • #2
    Ich habe ja wirklich nur sehr wenig ahnung von PHP und so aber vielleicht hilft dir ja mein Gedanke weiter:

    Ich könnte mir vorstellen, dass z.B. in einer DB gespeichert ist welcher Kunde welche Produkte gekauft hat. Jetzt verpackst du das ganze schön in ein Array (Arrayname = kunden id und die Werte sind Produkt ID) und dann suchst du (wie auch immer) nach übereinstimmungen. So weit in Ordnung?

    Kommentar


    • #3
      In die Richtung hab ich auch schon gedacht, ich glaube aber nicht, dass man den array Vergleich quasi 'live' machen sollte - könnte mir vorstellen, dass das einfach endlos dauert - nimm mal nur 100 Produkte und 100 Kunde - die Zahl der möglichen Konstellationen ist gewaltig...

      Kommentar


      • #4
        Also ich würd das nicht live machen, wenns da so was wie durchschnittswerte im hintergrund (also permanent) berechnet, dann dauert dass bei der akuten aktion nicht wirklich lange, sind dann ja sozusagen standartisierte werte.

        Kommentar


        • #5
          Warum nicht einfach in der Datenbank?

          Lese die Anzahl der gekauften Artikel aus, die von Usern gekauft wurden, die auch den Artikel A gekauft haben.
          Sortiere nach Anzahl der Käufe absteigend und nimm nur die ersten 3 Treffer
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Diese vorschläge sind meist gefaked. Zu jedem Produkt werden händisch einige Verknüpfungen (m zu n) angelegt. Das ganze wird auch "rückwärts" gelesen, dh. zu Produkt K, erscheint auch Produkt A.
            also zb.:
            A - K
            A - L
            A - Z

            Natürlich kannst du diese Beziehungen auch über die bereits bestellten Produkte aufbauen, aber ich bezweifle das die Ergebnis dabei wie gewollt ausfallen.
            Ich hab auf Amazon auch schon ein Buch und eine CD in einer Bestellung gehabt. Wie willst du herausfinden, ob die beiden Produkte überhaupt etwas miteinander zu haben?

            Kommentar


            • #7
              Original geschrieben von phoboslab
              Ich hab auf Amazon auch schon ein Buch und eine CD in einer Bestellung gehabt. Wie willst du herausfinden, ob die beiden Produkte überhaupt etwas miteinander zu haben?
              Die Masse macht's.

              Nicht jeder kauft so wie du ein Kinderbuch und eine ********************-DVD gleichzeitig *g*

              Wenn viele Leute zu "Pippi Langstrumpf" auch den "Räuber Hotzenplotz" kaufen, und viele andere zu einem "Werk" von Bolly Duster auch eins von Wina Gild - dann bist du nur ein Ausreißer, der in der Statistik in der Masse untergeht und sich nicht bemerkbar macht.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Klar, Amazon könnte sich das erlauben, die haben die nötige Masse an bestellungen. Tun sie aber wahrscheinlich nicht - ich kann mir nicht vorstellen, dass viele Leute eine DVD und den Directors Cut der selben DVD gekauft haben

                Original geschrieben von wahsaga
                Nicht jeder kauft so wie du ein Kinderbuch und eine ********************-DVD gleichzeitig *g*
                Bösartige Unterstellung! In dem Buch gings um MySQL!

                Kommentar


                • #9
                  Ich kenne natürlich dein DB-Design nicht aber müsste doch eigentlich recht easy sein. Könnte mir etwas in der richtung vorstellen

                  Code:
                  SELECT artikel.* best_1.*, count(best_2.*) AS anz
                  FROM artikel, bestellungen AS best_1, bestellungen AS best_2,
                  WHERE best_1.artikel_id == '$artiel_a'
                    AND best_2.kaeufer_id IN best_1.kaeufer_id
                  GROUP BY best_2.artikel_id
                  ORDER BY anz ASC;

                  Kommentar

                  Lädt...
                  X