Autor Zpráva
Taps
Profil
Zdravím,
v databázi mám produkty, které mají přiřazeny určitou skupinu atributů, např. níže

Hlava: bergamot, broskev, cukrový meloun, hruška, magnólie, mandarinka
Srdce: fialka, frézie, jasmín, konvalinka, orchidej, růže, švestka, tuberóza
Základ: cedr, ostružina, pižmo, vanilka

Můj dotaz zní: Když vyberu jeden základní produkt, tak jak mohu z databáze vybrat podobné produkty a seřadit je tak, aby na prvních pozicích byly produkty, které mají nejvíce shodných atributů.

Daný problém řeším na úrovni wordpressu, ale uvítám jakýkoliv typ, který by přispěl k řešení problému.

Děkuji
Kajman
Profil
Asi něco jako
SELECT Count(*) shod,
       a.produkt_id
FROM   atributy vzor
       JOIN atributy a
         ON a.skupina_id = vzor.skupina_id
            AND a.hodnota = vzor.hodnota
WHERE  vzor.produkt_id = 42            
GROUP  BY a.produkt_id
ORDER  BY 1 DESC

A ještě by se daly přidat počty atributů, kdyby se mělo řadit podle procentní shody. Ale bude to dost pomalé, takže bude potřeba na nějaké úrovni využívat cache.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0