Ik ben bezig met een query die in één keer alles ophaalt (zoals de categorieën en de daarbij behorende fora) voor de index van mijn forum. Alleen werkt het IN statement kennelijk niet in een LEFT JOIN, want wanneer ik dat probeer krijg ik een MySQL error, namelijk:
En dan is dit mijn Query:
Weet iemand of dit klopt dat er hier geen "IN" kan worden gebruikt (dus kennelijk alleen in een WHERE clausule)? En of ik dit dan anders zou kunnen oplossen?
Bij voorbaat dank!
code:
1
| You have an error in your SQL syntax near 'SELECT id FROM actions WHERE name = 'edit' OR name = 'lock' OR name = 'delete') ' at line 29 |
En dan is dit mijn Query:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| SELECT c.id AS cid, c.name AS category, f.id AS fid, f.name AS forum, f.description AS description, COUNT(DISTINCT t.id) AS topics, COUNT(DISTINCT p.id) - COUNT(DISTINCT t.id) AS posts, MAX(p.time) AS last, r.user AS mid, u.username AS moderator FROM categories AS c INNER JOIN fora AS f ON f.category = c.id LEFT JOIN topics AS t ON t.forum = f.id LEFT JOIN posts AS p ON p.topic = t.id LEFT JOIN rights AS r ON r.forum = f.id AND r.action IN (SELECT id FROM actions WHERE name = 'edit' OR name = 'lock' OR name = 'delete') LEFT JOIN users AS u ON u.id = r.user GROUP BY f.id, r.user ORDER BY c.order ASC, f.order ASC, u.username ASC |
Weet iemand of dit klopt dat er hier geen "IN" kan worden gebruikt (dus kennelijk alleen in een WHERE clausule)? En of ik dit dan anders zou kunnen oplossen?
Bij voorbaat dank!
[ Voor 26% gewijzigd door MarkvE op 13-05-2004 14:36 ]