Hey,
Om de actieve topics te krijgen van een forum gebruik ik onderstaande query:
Wwanneer ik de SELECT statement over de gehele UNION zet (zoals hierboven) en de GROUP BY toevoeg dan werkt de GROUP BY blijkbaar niet goed. Ik krijg namelijk nog dubbele topicid's terug in de resultaten.
Is dit überhaupt een goede methode om actieve topics weer te geven (of gaat dit heel traag worden na een tijdje)? Zo ja, hoe kan het dat de GROUP BY niet correct werkt?
Om de actieve topics te krijgen van een forum gebruik ik onderstaande 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
38
39
40
41
42
43
44
45
46
47
48
49
50
| SELECT topicid, lidid, gebruikersnaam, topictitel, datum FROM ( ( SELECT leden.id AS lidid, leden.gebruikersnaam AS gebruikersnaam, forum_topics.id AS topicid, forum_topics.titel AS topictitel, forum_topics.datum FROM forum_topics LEFT JOIN leden ON leden.id = forum_topics.lidid ) UNION ( SELECT leden.id AS lidid, leden.gebruikersnaam AS gebruikersnaam, forum_topics.id AS topicid, forum_topics.titel AS topictitel, forum_reacties.datum FROM forum_reacties LEFT JOIN leden ON leden.id = forum_reacties.lidid INNER JOIN forum_topics ON forum_topics.id = forum_reacties.topicid ) ) AS uniontable GROUP BY topicid, lidid, gebruikersnaam, topictitel, datum ORDER BY datum DESC |
Wwanneer ik de SELECT statement over de gehele UNION zet (zoals hierboven) en de GROUP BY toevoeg dan werkt de GROUP BY blijkbaar niet goed. Ik krijg namelijk nog dubbele topicid's terug in de resultaten.
Is dit überhaupt een goede methode om actieve topics weer te geven (of gaat dit heel traag worden na een tijdje)? Zo ja, hoe kan het dat de GROUP BY niet correct werkt?
[ Voor 7% gewijzigd door radem205 op 14-03-2010 23:15 ]