Zliczanie rekordów tabeli połączonej z inną wiele do wielu

0

Mam następujące tabele:

sites (id_sites, tytul)
tags (id_tags, name)
sites_tags (id_sites, id_tags)

Chcę teraz stworzyć zapytanie, które poda mi liczbę wszystkich stron, ale na tyle elastyczne, żeby można było dołożyć wyszukiwanie po konkretnym tagu. Moje obecne zapytanie wygląda tak:

SELECT COUNT(*) FROM sites
LEFT JOIN tags_sites ON(id_sites)
LEFT JOIN tags ON(id_tags)
WHERE tags.name='blabla'

Problem w tym, że jeśli mam np. 3 strony, a każda z nich posiada przypisane po 3 tagi to zwraca mi liczbę 9, a powinno być ciągle 3.

dodanie znacznika <code> - furious programming

0

Nie rób żadnych left join, normalny where.

0

@Buka77 coś kłamiesz, bo zwróci ci 9 tylko jeśli każda z tych 3 stron ma przypisane po 3 razy ten sam tag.

0

Tak, czy siak problem pozostał nierozwiązany

0

To pokaż dane dla których to zapytanie zwraca wynik 9 i wyjaśnij czemu powinien wg ciebie zwrócić mniej. Tak czy siak twój "problem" rozwiąże zwykłe distinct z podzapytaniem, ale moim zdaniem jest zupełnie zbędne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1