Ik heb nu het volgende probleem. Hij selecteert alles en geeft alles weer, maar omdat ik nu verder ga aantal posts enzo ophalen. Ontstaat er een probleem.
Mijn query:
<?php
$qry = "SELECT
cat.title AS cat,
subCat.id AS subCatID,
subCat.title AS subCat,
COUNT(t.id) AS topics,
p.user_id AS postUser,
DATE_FORMAT(p.dateTime, '%d %b %Y, %H:%i') AS newPostDateTime,
COUNT(p.id) AS posts
FROM
categorie AS cat
LEFT JOIN
categorie AS subCat
ON
cat.id = subCat.parent_id
LEFT JOIN
topic AS t
ON
subCat.id = t.cat_id
LEFT JOIN
post AS p
ON
subCat.id = p.cat_id
WHERE
cat.parent_id = 0
GROUP BY
subCat.id
ORDER BY
cat.id,
subCat.title";
?>
Nu geeft hij bij posts 2 aan terwijl er maar 1 record in me post tabel staat... heel apart. Het lijkt dus wel of hij alles keer 2 doet, ik kan natuurlijk wel gewoon delen door 2, maar dit is natuurlijk niet de bedoeling. Weet iemand wat er fout gaat? Heb de query nu 2 maal opnieuw opgebouwd in de hoop dat het een simpel foutje was maar dit is helaas niet zo...
Ik denk dat je van de postcount beter een subquery kan maken ipv een join, dat scheelt hoogstwaarschijnlijk ook een hoop in je performance. Werkt dit?
<?php
$qry = "SELECT
cat.title AS cat,
subCat.id AS subCatID,
subCat.title AS subCat,
COUNT(t.id) AS topics,
lastPost.user_id AS postUser,
lastPost.date AS newPostDateTime,
lastPost.count AS postCount
FROM
categorie AS cat,
(
SELECT
count(id) as count,
user_id,
DATE_FORMAT(dateTime, '%d %b %Y, %H:%i') as date
FROM
post
WHERE
cat_id = subCat.id
ORDER BY
dateTime DESC
LIMIT
1
) as lastPost
LEFT JOIN
categorie AS subCat
ON
cat.id = subCat.parent_id
LEFT JOIN
topic AS t
ON
subCat.id = t.cat_id
WHERE
cat.parent_id = 0
GROUP BY
subCat.id
ORDER BY
cat.id,
subCat.title";
?>
Zoiets?
Helaas loopt dan alles in de soep, geeft ie een dikke error dat subCat niet bestaat terwijl die dat wel doet.
Post heeft een cat_id om zo makkelijk de aantal post per categorie te kunnen tellen.