Chciałem zrobić mechanizm podobnych newsów. Czyli jeśli jest otwarty dany news to strona znajduje podobne newsy na zasadach:
- wyszukuje newsy która są umieszczone przynajmniej w 1 kategori w ktorej znajduje się głowny news
- wyszukuje newsy które posiadają przynajmniej 1 tag umieszczony w newsie głównym
Na tej podstawie zliczam ilość wystąpień tych danych za pomocą count (sumuje ilość wystąpień tagów oraz kategori). Na końcu zapytania chciałem pogrupować wyniki według id newsów lecz kiedy to zrobie wartości count zostaną zwiększone tyle razy ile powtarza się rekord danego newsa.
Dlatego nie mogę za bardzo operować potem na tabeli (LIMIT).
Zapytanie wygląda tak:
SELECT * , count(tags.nid)+count(newscategories.nid) AS wartosciowosc // wartosci z count zwiekszaja sie z grupowaniu tags.nid FROM newscategories LEFT JOIN tags ON newscategories.nid = tags.nid WHERE tags.nid != 36 AND tags.name IN ('google', 'biznes') OR newscategories.nid IN (1, 2) GROUP BY tags.id // grupowanie bo unikalnej wartosci, wtedy count sie nie dodaje samoczynnie ORDER BY wartosciowosc DESC
Jak mogę pogrupować te wartości po "tags.nid" tak aby wartosciowosc nie została automatycznie powiększana n wystąpień danego newsa?
Pozdrawiam