24. maj 2003 - 16:20
Der er
8 kommentarer og
2 løsninger
Anbefal funktion - amazon
Jeg vil gerne lave en anbefal bøger funktion.
kunde a har købt: bog1, bog2, bog3
kunde b har købt: bog1, bog3, bog4
kunde c har købt: bog2, bog3, bog5
Nu kommer kunde d og han køber bog1
han skal så have anbefalt de børger som andre kunder har købt der også har købt bog1 altså:
bog2, bog3, bog3, bog4
De skal så listes i række følge efter antal så bog3 kommer til at stå øverst og kun engang.
hvordan griber jeg lige det an??
Nu har jeg afsat flere point.
Det er hjælp til SQl-sætningen jeg er ude efter, ikke et færdigt system.
Vil jeg havde mere held med at flytte den til en anden kategori??
Det haster nemlig lidt
Du må nok hellere uddybe din tabelstruktur en anelse, men der er ingen tvivl om at dette er en af de noget sværere.
Vil kigge lidt på det efter arbejde
Jeg har ikke nogn tabelstruktur endnu.
Gætter selv på at det er noget med at man skal lave et images af query og så lave en ny query på dette. eller hvad det nu hedder.
En måde at gøre det på er følgende:
Lav en table alla det her
BOG_KOBT BOG_REF HITS
det er selvfølgelig id på bøger og antal hits i den sidste.
Det man gør er så at når kunde X som i forvejen har købt nogle bøger opdateres denne tabel. Eks. X køber bog 3 og har i forvejen bog 2 (og ikke andet ..)
Så skal der i tabellen findes (oprettes hvis den ikke er der) en række der hedder - Findes den allerede (3 - 2) .. så ligges der bare en til hits. (evt. kan du også opdatere (2 - 3) - altså den 'omvendte' - afhænging af din functionalitet..)
BOG_KOBT BOG_REF HITS
3 2 1
Det er vist ideen i det. Når man så skal have fundet det andre har købt, søges i denne tabel efter BOG_REF - i dit eksempel bog1 (ID) .. order by hits.. vupti en ordered liste med referencer og den der er 'flest hits på' øverst :-) .. det er sådan amazon er skruet sammen.
Tak det lyder ikke helt dumt. Jeg prøver det lige i aften, og virker det så er de 200 dine :)
Jeg fik det her af en amerikaner men kan ikke få det til at virke:
Customer ISBN
A book1
A book2
A book3
B book1
B book3
B book4
C book2
C book3
C book5
select f1.ISBN , count(f1.ISBN) as popularity
from customerFile f1
where f1.customer in (
Select f2.customer
from customerFile f2
where f2.ISBN='book1'
)
group by f1.ISBN
order by popularity desc
Og resultet blev:
Customer ISBN
A book1
A book2
A book3
B book1
B book3
B book4
C book2
C book3
C book5
SQL = "select f1.ISBN , count(f1.ISBN) as popularity from customerFile f1 where f1.ISBN <> 'book1' and f1.customer in (Select f2.customer from customerFile f2 where f2.ISBN='book1') group by f1.ISBN order by 2 desc"
Alt sammen i en tabel, for fed! karsten du får dog nogle pt, da din også vil virke, den er bare knap så fed ;)
Mange tak :-) .. og du har ret!. Det jeg skrev er egentlig en måde til at logge hvor brugere klikker sig hen - altså flowet i brugsmønstre. Men du har jo allerede gemt de data i basen (når en bruger har købt en bog) - så selvfølgelig ...
Kurser inden for grundlæggende programmering