Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie powiązań między 2 tabelami
Forum PHP.pl > Forum > Bazy danych > MySQL
rafikbarca
Pisze stronę podobną do filmweb/lubimyczytać i chcę zrobić system, poleceń który miałby działać w ten sposób, że użytkownicy mogą polecać podobne produkty. Na zasadzie obejrzałem filmA i kojarzy mi się najbardziej z filmemB. W ten sposób zliczając takie głosy wyświetm na stronie filmu A filmy z największa liczbą głosów podobieństw. Mam tabele w której do kolumny id1 podaje id filmuA a do id2 FilmuB.

Mam już też chyba prawie gotowe zapytanie zliczające wyglądające tak

  1. SELECT `id1`,`id2`, COUNT(*) AS votes FROM glosy GROUP BY `id1`,`id2` ORDER BY votes DESC


i wynik
id1 id2 votes
12 9 2
9 12 2
10 12 2
12 10 1

ale jest jeszcze jeden problem. Mamy tu id12 i id9 x2 oraz id9 i id12 X2.
Chciałbym żeby w takiej sytuacji to się też sumowało i razem dawało 4 bo (id12 i id9) to to samo co (id9 i id12), a (id10 i id12) razem 3.

Jak zmodyfikować to zapytanie bądź co innego mogę zrobić?
Pyton_000
No jak to samo. Przecież Film A może być podobny do B, C, D, ale już Film B może być podobny tylko do A, C
rafikbarca
ale jeżeli ktoś oglądał film B i poleca film A chce żeby się sumowało z tym że jak ktoś oglądał film A i poleca FilmB.
trueblue
Cytat
Sprzątaczka: No pewnie, bo po co by wyrywał?! To złodziej!
Ekspedientka: I pijak! Bo każdy pijak to złodziej!


  1. SELECT LEAST(`id1`,`id2`) AS tmpid1,GREATEST(`id1`,`id2`) AS tmpid2, COUNT(*) AS votes FROM glosy GROUP BY tmpid1,tmpid2 ORDER BY votes DESC
rafikbarca
Dzieki wielkie.

Niestety muszę jeszcze wytłumaczyć sposób działania tego zapytania, a nie jestem do końca przekonany czy je właściwie pojmuje
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.