специфичная выборка

Stroyka

Новичок
специфичная выборка

Допустим есть БД MySQL, в которой есть такая таблица (2 колонки):
id значение
1 43
2 23
3 2
4 35
5 21
6 19
7 14
8 2
9 12
10 21
11 24
12 11
13 89
14 12
15 91
16 51
Мне нужно через select из 10 последних (по id) строк выбрать 5 строк с самыми большими значениями.
Как это сделать? Я могу либо выбрать 5 строк с самыми большими значениями из всей таблицы либо последние 10 строк, а как это правильно соединить?

Заранее большое спасибо!
 

Фанат

oncle terrible
Команда форума
Lews
ты полагаешь, что указание какого-либо поля после уникального автоинкрементного Id в order by имеет хоть малейший смысл?

-~{}~ 08.11.05 21:49:

Stroyka
ограничение ты должен ввести сам.
найди id десятый с конца, и ограничь выборку по него
 

Stroyka

Новичок
Автор оригинала: Фанат
найди id десятый с конца, и ограничь выборку по него
Приведи плз пример конечного запроса.
Куда именно подставить номер 10-го с конца id?
 

Фанат

oncle terrible
Команда форума
какие-то проблемы?
тебя что-то не устраивает?
что конкретно?
 

Stroyka

Новичок
Автор оригинала: Фанат
какие-то проблемы?
В общем-то да.
Проблема изложена выше, решения я пока не нахожу. К сожалению.
Может, я что-то не так понял или упустил?
 

Фанат

oncle terrible
Команда форума
1.найди id десятый с конца
2.ограничь выборку по него
какой из пунктов вызывает трудности?

слушай, а в реальном мире - какая задача является причиной этого запроса?
 

Stroyka

Новичок
Есть вот такой запрос:
select * from DB order by значение desc limit 5
он дает пять строк с макимальными значениями.
что нужно дописать, чтобы запрос оценивал только последние 10 строк по id (допустим у нас ID с 1 по 16, т.е. нужно взять только с 7 по 16)

-~{}~ 08.11.05 22:42:

задача сложная стоит, это лишь приведенный к простому запрос. на самом деле все не так просто.
суть в том, что нужно сортировать статьи по кол-ву комментариев к ним. Причем брать изначально не все статьи, а только последние 30 или 50 например.

-~{}~ 08.11.05 22:46:

в строку запроса я ведь не могу вписать второй limit?
Тогда каким образом ограничивать выборку?
 

Фанат

oncle terrible
Команда форума
в строку запроса я ведь не могу вписать второй limit?
не можешь.
но ты можешь ведь узнай айди одним запросом, и подставить его во where другому.

Но это всё не нужно.
поскольку задача твоя решается совершенно по-другому
select articles.*,count(comments.id) as numcom from articles, comments where comments.aid=articles.id order by articles.id desc limit 50

возьми себе за правило спрашивать на форуме не решение кривой задачи, к которой тебя привел недостаток знаний, а описывать настоящую проблему.
 

Stroyka

Новичок
все, сделал. это выглядит у меня вот так:

select * from DB where id >= 7 order by значение desc limit 5
 

Фанат

oncle terrible
Команда форума
молодец
а теперь перечитай моё сообщение и сделай правильно.
 

Stroyka

Новичок
теперь появился еще один похожий вопрос.
для каждой статьи задан вид спорта (topic) мне для главной страницы нужно вывести 5 последних статей по разным видам спорта. Тут было бы все просто, но часто последние 5 статей все по одному виду спорта, поэтому нужно выбирать не просто последние 5 строк, а последние 5 строк с уникальным topic. Как сформулировать запрос?
 

Фанат

oncle terrible
Команда форума
какой смысл тебе отвечать, если ты не делаешь ,что тебе пишут?
 

Stroyka

Новичок
как это не делаю? делаю!
предыдущую выборку я благополучно сделал. спасибо
 

Фанат

oncle terrible
Команда форума
ты сделал идиотскую выборку.
как делать правильно - я тебе написал.
ты вообще читал, что написано?
может, тебе очки купить?
 

Stroyka

Новичок
ау? я все сделал именно так, как ты написал 08.11.05 22:58. сообщение следующее забудь, это был эксперимент.

что касается новой задачи, соорудил запрос:
select DISTINCT topic from articles order by id desc limit 0, 5
но тут он выбирает только виды спорта, а все остальные данные (id, заголовок и прочее) не выбирает. как их правильно дописать?
select DISTINCT id,topic,title from articles order by id desc limit 0, 5
правильно уже не работает

-~{}~ 10.11.05 01:25:

Подскажите плз! Что нужно дописать к запросу
select DISTINCT topic from articles order by id desc limit 0, 5
чтобы он выбирал все уникальные по топику строчки, при этом считывая и другие поля (id, title и остальные)..?
 
Сверху