Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zliczanie powiązań między 2 tabelami
rafikbarca
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.08.2015

Ostrzeżenie: (0%)
-----


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ć?

Ten post edytował rafikbarca 27.08.2015, 21:23:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
rafikbarca
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.08.2015

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
rafikbarca
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.08.2015

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 14:48