Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Szykanie podobnych artykułów po tagach
Forum PHP.pl > Forum > Bazy danych
sweter
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
thek
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.
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.