категори: Игры
подкатегории: 3D-шутеры, RPG, стратегии, Флеш-игры ...
работает
Код: Выделить всё
SELECT t3.id_se, t3.name_se, t3.parent_se_id
FROM section AS t3
WHERE t3.parent_se_id = 1
UNION ALL
SELECT t1.id_se, t1.name_se, t1.parent_se_id
FROM section AS t1
WHERE
t1.parent_se_id = t3.id_se
есть задачка http://habrahabr.ru/blogs/mysql/44807/
решениеЕсть новостной блоггерный сайт. Есть такие сущности как новости и комментарии к ним.
Задача — нужно написать запрос, который выводит список из 10 новостей определенного типа (задается пользователем) отсортированные по времени издания в хронологическом порядке, а также к каждой из этих новостей показать не более 10 последних коментариев, т.е. если коментариев больше — показываем только последние 10.
Код: Выделить всё
CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`date` datetime NOT NULL,
`title` varchar(200) NOT NULL,
PRIMARY KEY (`id`),
KEY `date` (`date`,`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `comment` (
`id` int(11) NOT NULL auto_increment,
`news_id` int(11) NOT NULL,
`date` datetime NOT NULL,
`body` varchar(200) NOT NULL,
PRIMARY KEY (`id`),
KEY `news` (`news_id`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Код: Выделить всё
SELECT n. *, c. *
FROM (
SELECT *
FROM news
WHERE
type = 2
ORDER BY date DESC
LIMIT 10
) as n
INNER JOIN (
SELECT *
FROM comments
WHERE
comments.news_id IN (
SELECT news.id
FROM news
WHERE
type = 2
ORDER BY date DESC
)
ORDER BY date DESC
LIMIT 10
) AS c
ON c.news_id = n.id
как сюда прикрутить мой вариант
вот я пробовал - не хочет....
Код: Выделить всё
SELECT n. *, c. *
FROM (
SELECT *
FROM section as t1
LIMIT 10
) as n
INNER JOIN (
SELECT *
FROM section as t2
WHERE
t2.id_se IN (
SELECT t3.id_se
FROM section as t3
)
LIMIT 10
) AS c
ON c.id_se = n.parent_se_id