![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 28.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
Załóżmy, że mam 3 tabele: photos ( id,name) tags (id,name) i photo_tags (photo_id,tag_id) photos i tag są połączone relacją wiele do wielu. Teraz 2 pytania: 1. załóżmy, że chcę pobrać wszystkie zdjęcia, które są otagowane (jednocześnie) przez tagi foo i bar. Jak to wykonać za pomocą jednego zapytania?(i czy lepiej to mieć w jednym zapytaniu, czy może lepiej to rozbić na kilka selectów i przemielić w php) ? 2. Załóżmy, że mam zdjęcie o id= 5. Chciałbym pobrać zdjęcie, które ma podobne* tagi do tego zdjęcia *tak naprawdę, to sam nie do końca jestem przekonany co oznacza podobne - czy dokładnie takie same, czy np. 80% tagów takich samych - tu bym prosił o radę, w jaki sposób uznać, czy zdjęcie jest podobne czy nie.... Z góry dzięki za odpowiedzi |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat i przy jednym tagu działa ok, jednak jak przyłączyć takie, które mają jednocześnie dwa tagi? dodanie AND photo_tags.name="bar" nie działa(bo i nie ma sensu) Wystarczy chyba tylko jedno dowiązanie przy JOIN. Cytat zastanawiałem się nad takim rozwiązaniem: pobieram np. 80% tagów danego zdjęcia (to robię przez php) - i szukam innych zdjęć, które mają wszystkie te 80% tagów takich samych. jeśli nie ma, to szukam takie, które mają wspólne 60% tagów - i tak do momentu, aż nie znajdę np. 5 podobnych zdjęć. rozbije się to na (w wariancie pesymistycznym) kilka zapytań, ale w sumie nie będzie tam zasobożernych funkcji.. Zawsze pozostaje tabela opisująca pokrewne tagi. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 16:57 |