webshop: Kunder der har købt dette produkt har også købt
Hejsa,
Jeg forsøger at lave en query, som skal give mig en funktion a la 'Kunder der har købt dette produkt har også købt'. Jeg mente selv, at jeg var skarp nok i JOINS og MYSQL-forespørgelser, men jeg må nok give op - og bede om hjælp her :-)
Funktionen skal vise op til 3 andre produkter, som oftest er købt sammen med det aktuelle produkt.
Jeg har følgende tabeller:
ordre ------- id kundenavn -------
vare ------- id varenavn varepris -------
ordrevarer ------- ordreid vareid antal -------
Når en ordre er afgivet, så består den således af en post i 'ordre' og en post pr. varelinie i 'ordrevarer'.
Jeg glæder mig til, at se hvordan 'nødden' kan knækkes :-)
Den kan helt sikkert optimeres en del, men mest af alt for at demonstere, at du ikke behøver alle de tabeller du har listet - nedenfor er kun 'ordrevarer' tabellen brugt;
Jeg går ud fra at du vil give et ID for en vare, du vil finde "relaterede" produkter til?
SELECT `vareid` FROM `ordrevarer` WHERE `vareid` != 202 AND `ordreid` IN (SELECT `ordreid` FROM `ordrevarer` WHERE `vareid` = 202) GROUP BY `vareid` ORDER BY count(`ordreid`) DESC LIMIT 0,3
De to steder hvor der står 202 skal du indsætte ID'et.
Det tager langt tid at neste SELECT kommandoer - men den inderste er i tilfældet ovenfor, altid samme resultset, så hvis du kører den en gang og gemmer det i en variabel, du senere kan bruge i den anden, er det kun to SELECT kommandoer der skal udføres. Du kan eventuelt smide det i en MySQL funktion - så skal du ikke "svine" din kode til med ligegyldige kald - og så kan du lade data ligge på MySQL serveren, i stedet for at kaste det frem og tilbage over nettet / applikationerne.
Alternativet er nogle lidt længere JOINS - og JOINS tager også tid .. Men altså - som sagt er det heller ikke kønt som ovenfor, blot at skalere ned på resultatet med LIMIT, den skal stadig hente alt data ud, for at kunne skalere ned.
Skal vi lukke spørgsmålet? Eller arbejder du stadig på at få det til at virke?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.