Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Szykanie podobnych artykułów po tagach
sweter
post 11.07.2011, 21:53:43
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


Witam,
chciałem zrobić mechanizm, który podpowiadałby użytkownikowi podobne artykuły do obecnie czytanego. Wpadł mi do głowy taki pomysł:
Powiedzmy, że użytkownik czyta tekst zatytułowany XXX. Jest on opisany przez tagi 'tag1', 'tag2' i 'tag3'.
Istnieją jeszcze 3 artykuły w bazie danych:
- YYY o tagach 'tag2', 'tag4'
- ZZZ o tagach 'tag1', 'tag2', 'tag3', 'tag5'
- AAA o tagach 'tag2', 'tag3', 'tag5'

Jak widać:
- artykuł YYY ma 1 wspólny tag: 'tag2'
- artykuł ZZZ ma 3 wspólne tagi: 'tag1', 'tag2', 'tag3'
- artykuł AAA ma 2 wspólne tagi: 'tag2', 'tag3'

Chciałbym, aby lista podobnych była następuąca:
- ZZZ
- AAA
- YYY

Jak widać zostały wypisane artykuły, których ilość wspólnych tagów z artykułem XXX jest malejąca.
I teraz pytanie dotyczące SQL:
Jak powinno wyglądać odpowiednie zapytanie do DB zakładając, że ma 2 tabele:

Article
- id
- ... (inne mniej istotne pola)

Article_tag
- id
- article_tag
- tagi_id

Tag
- id
- name

Proszę o wyjaśnienie i podpowiedzi jak takie coś zbudować, bo w jestem cienki w te klocki (SQL).
Pozdrawiam smile.gif


--------------------
Go to the top of the page
+Quote Post
thek
post 12.07.2011, 08:22:52
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pomyśl... Wybierasz z tabeli łączącej te, które mają id tagów artykułu joinujesz na tabelę z artykułami, z pominięciem id_artykułu oglądanego, group by id artykułu, count, limit. Najtrudniejsza część to szybkie ograniczenie ogromnej ilości danych tabeli łaczącej. Dlatego sensowniejsze niż zobić joina obu tabel jest joinowanie z już pobranycmi podzapytaniem określonymi id_tagów dla tego artykułu.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 08:18