[MySQL] Lastige query (of queries?)
Hallo,
Ik probeer een tagcloud te maken van tags die bij een blog horen die goedgekeurd is door een administrator. Maar ik snap het zelf nu al niet meer.
Hiervoor heb ik 3 tabellen.
blogs
id
(...)
moderated
tags
id
naam
tags_blog
id
tag_id
blog_id
Oftewel, ik moet tags.naam selecteren en het aantal keer dat tags.naam voorkomt. Dat lukt wel, maar d'r moet nog een voorwaarde bij. Stel dat een blog nog niet goedgekeurd is, dan moet die niet worden meegeteld als aantal, en tags.naam moet ook niet worden geselecteerd als die tag van een blog is (of meerdere blogs) die nog niet goedgekeurd is.
Dat laatste spreekt voor zich.
Maar hoe doe ik dit nu? Iets met VIEWs?
Ik probeer een tagcloud te maken van tags die bij een blog horen die goedgekeurd is door een administrator. Maar ik snap het zelf nu al niet meer.
Hiervoor heb ik 3 tabellen.
blogs
id
(...)
moderated
tags
id
naam
tags_blog
id
tag_id
blog_id
Oftewel, ik moet tags.naam selecteren en het aantal keer dat tags.naam voorkomt. Dat lukt wel, maar d'r moet nog een voorwaarde bij. Stel dat een blog nog niet goedgekeurd is, dan moet die niet worden meegeteld als aantal, en tags.naam moet ook niet worden geselecteerd als die tag van een blog is (of meerdere blogs) die nog niet goedgekeurd is.
Dat laatste spreekt voor zich.
Maar hoe doe ik dit nu? Iets met VIEWs?
Gewijzigd op 01/01/1970 01:00:00 door Harmen
Gesponsorde koppelingen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
t.naam,
COUNT(tb.id) AS aantal
FROM
tags AS t
INNER JOIN
tags_blogs AS tb
ON tb.tag_id = t.id
INNER JOIN
blogs AS b
ON b.id = tb.blog_id
WHERE
b.moderated = 1
GROUP BY
t.naam
t.naam,
COUNT(tb.id) AS aantal
FROM
tags AS t
INNER JOIN
tags_blogs AS tb
ON tb.tag_id = t.id
INNER JOIN
blogs AS b
ON b.id = tb.blog_id
WHERE
b.moderated = 1
GROUP BY
t.naam
Zoiets?
Een VIEW is niet meer dan een hardcoded SELECT-query, dat maakt dus niet uit.
Wanneer jij een WHERE nodig hebt in je query, welke query?, dan zet je daar toch gewoon een WHERE in? Laat de query eens zien, kunnen we meedenken.
Wanneer jij een WHERE nodig hebt in je query, welke query?, dan zet je daar toch gewoon een WHERE in? Laat de query eens zien, kunnen we meedenken.
Wow, Blanche! In één keer goed :), dank je wel!



