Существует типовая задача вывести несколько статей из различных категорий одним списком выполнив только один запрос к базе данных. Привожу мое решение для MySQL.
Исходными таблицами являются таблица разделов sec и таблица элементов elem. В таблице elem для связи с разделами поле sec
create table sect ( id int primery key auto_increment, name varchar(16) ); create table elem ( id int primery key auto_increment, sec int not null, name varchar(16) );
Ниже решение. Стоит обратить внимание на сортировку: в первую очередь по разделам, во вторую - согласно условиям конкретной задачи
Для примера я поставил "задачу": отобрать из всех категорий первые (по ID) два элемента
set @rank = 0; set @cursec = -1; select sname, ename from ( select s.name sname, e.name ename, (IF (@cursec != s.id,(@rank := 1),(@rank := @rank + 1))) RANK, @cursec := s.id CURSEC from sect s left join elem e on e.sec = s.id order by s.id,e.id ) temp where rank <= 2;