Topic: 3 lenteliu LEFT JOIN su GROUP BY
Turime 3 lenteles:
Forum category (id, name, order)
Forum topics (id, category, name ir t.t.)
Forum posts (id, topic, is_topic (jei iraso turinys yra ir t.t)
Reikia gauti: kategoriju pavadinimus, temu ir postu skaiciu kiekvienoje is ju.
SELECT
FC.id,
FC.name,
FC.description,
COUNT(FT.id) AS topiccount,
COUNT(FP.id) AS postcount
FROM
forum_categories FC
LEFT JOIN
forum_topics FT ON FT.category = FC.id
LEFT JOIN
forum_posts FP ON ( FP.topic = FT.id AND is_topic = 0)
GROUP BY
FC.id
ORDER BY
order_,
name DESC
Naudojant pastaraja uzklausa - tik temu skaicius paskaiciuojamas teisingai, tuo tarpu postu - duodama tas pat
Sudejus GROUP BY visus laukus, pagal kuriuos reiktu grupuot - del pasikartojancio topic id post lenteleje, irasai kartojasi
Kaip isvengiant keliu uzklausu butu galima issitraukti sia informacija?