Se qualcosa non è chiaro domandate per favore.
Query originale:
SELECT f.*, c.* FROM #__categories c
LEFT JOIN #__forums f ON f.forum_cat_id = c.cat_id
WHERE c.cat_language = %d
ORDER BY c.cat_disp_position, c.cat_id, f.forum_disp_position, f.forum_id ASC
Risultati (forum_disp_position è l'order):
Categoria 1
---- Forum 1 --- Order 1
---- Forum 2 --- Order 2
---- Forum 3 --- Order 3
Categoria 2
---- Forum 4 --- Order 1
---- Forum 5 --- Order 2
---- Forum 6 --- Order 3
Categoria 3
---- Forum 7 --- Order 1
---- Forum 8 --- Order 2
---- Forum 9 --- Order 3
Io vorrei estrarre il MAX e MIN di forum_disp_position in modo tale da poter inserire delle freccette per spostare "sotto e sopra" i forum e mi serve sapere qual'è il MAX di un forum e il MIN di un forum di una determinata categoria per non stampare la freccetta SU quando si tratta del primo forum e GIU' quando si tratta dell'ultimo... (immagine: http://s23.postimg.org/xshp06rcr/forum.jpg) Le tabelle sono:
CREATE TABLE IF NOT EXISTS `#__categories` (
`cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cat_name` varchar(80) NOT NULL DEFAULT '',
`cat_disp_position` int(10) NOT NULL DEFAULT '0',
`cat_language` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`cat_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `#__forums` (
`forum_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`forum_name` varchar(80) NOT NULL DEFAULT '',
`forum_disp_position` int(10) NOT NULL DEFAULT '0',
`forum_cat_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`forum_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Se provo con questa query:
SELECT f.*, c.*, MAX(f.forum_disp_position) AS max_order, MIN(f.forum_disp_position) as min_order
FROM #__categories c
LEFT JOIN #__forums f ON f.forum_cat_id = c.cat_id
WHERE c.cat_language = %d
GROUP BY f.forum_id
ORDER BY c.cat_disp_position, c.cat_id, f.forum_disp_position, f.forum_id ASC
Il dump mi restituisce:
Mentre io voglio che il "forum 1", "forum 2" e "forum 3" mi stampino sempre max_order = 3 e min_order = 1 e non 1, 2 e 3.codice:Array ( [forum_id] => 4 [forum_name] => 1 Forum [forum_disp_position] => 1 [forum_cat_id] => 1 [cat_id] => 1 [cat_name] => 1 Categoria [cat_disp_position] => 1 [cat_language] => 1 [max_order] => 1 [min_order] => 1 ) Array ( [forum_id] => 5 [forum_name] => 2 forum [forum_disp_position] => 2 [forum_cat_id] => 1 [cat_id] => 1 [cat_name] => 1 Categoria [cat_disp_position] => 1 [cat_language] => 1 [max_order] => 2 [min_order] => 2 ) Array ( [forum_id] => 6 [forum_name] => 3 forum [forum_disp_position] => 3 [forum_cat_id] => 1 [cat_id] => 1 [cat_name] => 1 Categoria [cat_disp_position] => 1 [cat_language] => 1 [max_order] => 3 [min_order] => 3 ) Array ( [forum_id] => 7 [forum_name] => 4 forum [forum_disp_position] => 1 [forum_cat_id] => 2 [cat_id] => 2 [cat_name] => 2 Categoria [cat_disp_position] => 2 [cat_language] => 1 [max_order] => 1 [min_order] => 1 ) Array ( [forum_id] => 8 [forum_name] => 5 forum [forum_disp_position] => 2 [forum_cat_id] => 2 [cat_id] => 2 [cat_name] => 2 Categoria [cat_disp_position] => 2 [cat_language] => 1 [max_order] => 2 [min_order] => 2 ) Array ( [forum_id] => 9 [forum_name] => 6 forum [forum_disp_position] => 3 [forum_cat_id] => 2 [cat_id] => 2 [cat_name] => 2 Categoria [cat_disp_position] => 2 [cat_language] => 1 [max_order] => 3 [min_order] => 3 ) Array ( [forum_id] => 10 [forum_name] => 7 forum [forum_disp_position] => 1 [forum_cat_id] => 3 [cat_id] => 3 [cat_name] => 3 Categoria [cat_disp_position] => 3 [cat_language] => 1 [max_order] => 1 [min_order] => 1 ) Array ( [forum_id] => 11 [forum_name] => 8 forum [forum_disp_position] => 2 [forum_cat_id] => 3 [cat_id] => 3 [cat_name] => 3 Categoria [cat_disp_position] => 3 [cat_language] => 1 [max_order] => 2 [min_order] => 2 ) Array ( [forum_id] => 12 [forum_name] => 9 forum [forum_disp_position] => 3 [forum_cat_id] => 3 [cat_id] => 3 [cat_name] => 3 Categoria [cat_disp_position] => 3 [cat_language] => 1 [max_order] => 3 [min_order] => 3 )