Stephan Huber: (PHP/ MySQL) - kunden die X kauften kauften auch y......

Beitrag lesen

Hallo Sven,

Hallo,
   ^Das heißt 'Hello', oder die nachfolgende Sprache paßt nicht (zuviel Whisky getestet?). :)

Ich glaube da war eher jemand zu faul, sein Crossposting in ein englischsprachiges Forum zu übersetzen ;-).

Wenn ich allerdings mal auf meine vergangenen Einkaufszettel schaue, dann ist eine Kombination beliebiger Produkte kaum sinnvoll: Wer Karotten kauft, kauft auch Senf (damit er was zum Würzen hat?). Wer Senf kauft, kauft auch T-Shirts (weil er sich vollkleckert und keinen Bock zum Waschen hat?). Wer T-Shirts kauft, kauft auch Toilettenpapier (Ähm...???).

Deswegen ja auch "Customer who bought..." usw., Dein Datenbankschema würde ja nur die gleichzeitigen Bestellungen erfassen, bei sowas wie z.B. Amazon wird aber in der Datenbank erfaßt, was die Kunden, die diesen Artikel bestellt haben, irgendwann einmal gekauft haben. Das geht nur so wie es srob gesagt hat ("nur" natürlich in Anführungszeichen, es gehen sicher auch noch andere Datenbankschemen, aber man braucht die Kunden->Artikel Verknüpfung). Und dann funktioniert das statistisch wunderbar, wenn man genügend Datensätze hat, um Zufälligkeiten unter ein bestimmtes Niveau zu drücken. Die Empfehlungen, die man bei Amazon bekommst, sind sehr selten unpassend, ich nehme an, die zeigen das "Kunden, die dieses Buch gekauft haben, haben auch diese Bücher gekauft" nur an, wenn ein bestimmter Schwellenwert an Korrelation überschritten ist.
Also a la:
"select count(*) as anzahl from kunden_artikel as ka left join kunden_artikel as ka2 on ka.kundenid=ka2.kundenid where ka.artikelid=$gekaufter_artikel and ka2.artikelid!=$gekaufter_artikel group by ka2.artikelid having anzahl>5 order by anzahl desc";

Viele Grüße
Stephan