Mailinglisten-Archive |
----- Original Message ----- From: "Björn Schotte" <bjoern_(at)_baer.main.de> To: <php_(at)_solix.wiso.Uni-Koeln.DE> Sent: Sunday, April 30, 2000 5:07 PM Subject: Re: [php] Crosspromotion in shops? > * Wilfried Henseler wrote: > > Also (siehe amazon): > > "Wer dieses Buch gekauft hat, hat auch .... gekauft" > > Mal schnell auf den Schmierzettel gepinselt. Könnte sein, dass > es fehlerhaft ist, mal sehen: > > Tabelle produkt enthält eine Produkt-ID plus restliche Produktdaten. > Tabelle kunde enthält Kunden-ID plus restliche Kundendaten. > Tabelle bestellung enthält Kunden-ID plus Produkt-ID plus restliche > Bestelldaten (evtl. noch weiter zu normalisieren) > > In einer Zeile: > > select b2.pid from bestellung as b1, bestellung as b2 where b1.pid="1" > and b2.kid=b1.kid and b2.pid not like '1' group by b2.pid; > > Übersetzt: selektiere mir die Produkt-ID2 (b2.pid) aus zwei Bestelltabellen > (b1, b2), bei der b1.pid die Produkt-ID ist auf die die Crossover-Bestellungen > geprüft werden sollen, sowie der Kunde von b2 und b1 der gleiche ist und > die Produkt-ID aus p2 nicht gleich b1.pid ist. Gruppiere das Result dann gegen > b2.pid, um jede pid einzeln zu erhalten. > > Falls jemand eine bessere Lösung oder Anmerkungen zu meiner Lösung > hat, nur her damit. :) Hallo, hmmm... aber ist diese loesung nun "schonender"? Immerhin brauchst du nach diesem prinzip 1000 x 1000 = 1.000.000 sql abfragen. (Bei angenommenen 1000 produkten) Wenn ich 50 bestellnummern pro user abspeichere, durchlaufe ich die tabelle der user 1000 mal (fuer jedes produkt nur einmal). Habe allerdings den etwas hoeheren php aufwand, da ich alle 50 produkte Y pro user, der produkt A gekauft hat, in das array produkte[A,Y] addieren muss. Und das halt 1000 mal. Oder ich mache mir noch mehr php-aufwand und durchlaufe die user tabelle nur ein einziges mal und adde dabei alle produktkombinationen auf einmal in das array. Hmmm... welcher weg ist eleganter? danke, wilfried
php::bar PHP Wiki - Listenarchive