сложный запрос UNION JOIN обойти LIMIT

rtyug
На сайте с 13.05.2009
Offline
263
578

хотел вывести одим запросом ближайщие подкатегории, так сделано тут например: http://yaca.yandex.ru/yca/cat/Entertainment/

категори: Игры

подкатегории: 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

НО хочу сделать чтобы был LIMIT 3 в подкатегориях, в данном случае не получается это сделать...

есть задачка 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
Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
DimaSe
На сайте с 31.01.2009
Offline
99
#1

потерто...

rtyug
На сайте с 13.05.2009
Offline
263
#2

сори, забыл сказать, да MySQL

DimaSe
На сайте с 31.01.2009
Offline
99
#3

Смутил меня ссылкой...

Не во всех версиях MySql поддерживаются вложенные select.

Насколько я понимаю проблема именно в этом.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий