Mysql4 Query problem
| Project: | TagTool |
| Version: | 5.x-1.2 |
| Component: | Code |
| Category: | bug report |
| Priority: | critical |
| Assigned: | Unassigned |
| Status: | needs review |
Jump to:
This query doesn't work in Mysql4: (Group problems)
$result = db_query_range("SELECT t.name, MAX(n.created) FROM {term_data} t INNER JOIN {term_node} r ON r.tid = t.tid INNER JOIN {node} n ON n.nid = r.nid WHERE t.vid = %d GROUP BY r.tid ORDER BY MAX(n.created) DESC", $vid, 0, $num_tags);
Semms for the use of an aggregate functions, MAX in this case, on the WHERE clause (out of SQL standard), so it's possible to remove the MAX on the Order by:
$result = db_query_range("SELECT t.name, MAX(n.created) FROM {term_data} t INNER JOIN {term_node} r ON r.tid = t.tid INNER JOIN {node} n ON n.nid = r.nid WHERE t.vid = %d GROUP BY r.tid ORDER BY MAX(n.created) DESC", $vid, 0, $num_tags);
We have also an Desc order on last created tags.

#1
The bug came up here too.
user warning: Invalid use of group function query: SELECT t.name, MAX(n.created) FROM term_data t INNER JOIN term_node r ON r.tid = t.tid INNER JOIN node n ON n.nid = r.nid WHERE t.vid = 7 GROUP BY r.tid ORDER BY MAX(n.created) DESC LIMIT 0, 10#2
My working version:
tagtool.module, Line 134
<?php$result = db_query_range("SELECT t.name, MAX(n.created) last_created FROM {term_data} t INNER JOIN {term_node} r ON r.tid = t.tid INNER JOIN {node} n ON n.nid = r.nid WHERE t.vid = %d GROUP BY r.tid ORDER BY last_created DESC", $vid, 0, $num_tags);
?>