Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] many-to-many - pobieranie wyników
zdzichu
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zdzichu
post
Post #2





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 28.08.2006

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


...prosiłbym bardzo o pomoc przy tym joinie. mam takie zapytanie:
  1. SELECT photos.id AS photo_id, photos.name,photo_tags.name AS tag,photo_tags.id AS tag_id FROM photos LEFT JOIN (photo_tags,photo_tags_photos) ON (photo_tags_photos.photo_id=photos.id AND photo_tags_photos.photo_tag_id = photo_tags.id) WHERE photo_tags.name IN ('foo','bar')

i otrzymuję w wyniku coś takiego:
Kod
photo_id     name     tag     tag_id
7    asd.jpeg    foo    5
8    dsa.jpeg    foo    5
8    dsa.jpeg    bar    6
9    ttt.jpeg                bar    6

ogólnie wiem, że ten IN() nie ma sensu w moim przypadku, użyłem go tylko, żeby pokazać jak wyglądają dane w mojej bazie. chciałbym pobrać zdjęcie, które ma tagi foo i bar - czyli w moim przypadku dsa.jpeg (i tylko te)
z góry dzięki za wszelką pomoc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 21:33