Forum Webscript.Ru

Общие => Базы данных => Тема начата: xRUSha от 16 Апреля 2003, 10:31:50

Название: помогите плз составить запрос
Отправлено: xRUSha от 16 Апреля 2003, 10:31:50
Неделю не могу придумать, как составить примитивный запрос на одну табличку. Суть вот в чем - есть такая таблица:
id int
body text
url text
data date

Нужно составить запос - который бы возвращал все записи за последние бве даты. Дата может (и скорей всего будет) повторятся, т.е. одна и та же дата может быть к нескольких записей.

заранее спасибо
Название: помогите плз составить запрос
Отправлено: Макс от 16 Апреля 2003, 12:06:59
первым запросом получи последние 2 даты
вторым - все записи по ним
(это если никто не подскажет как одним запросом сделать)
Название: помогите плз составить запрос
Отправлено: fidget от 16 Апреля 2003, 12:07:53
> который бы возвращал все записи за последние бве даты.
это что значит?
 за последние 2 дня или записи у которых даты самые новые?
если второе, то тебе нужно

SELECT ... FROM ... ORDER BY date DESC LIMIT 2
Название: помогите плз составить запрос
Отправлено: NAS от 16 Апреля 2003, 12:24:01
Я так понимаю у него может быть несколько записей за день.
Название: помогите плз составить запрос
Отправлено: xRUSha от 16 Апреля 2003, 13:40:18
Цитировать
Я так понимаю у него может быть несколько записей за день.

Именно так, но при этом они будут появлятся не каждый день.

короче пример:
id   ...  data
1        2003-04-10
2        2003-04-10
3        2003-04-10
5        2003-04-14
6        2003-04-14
7        2003-04-14
8        2003-04-18
9        2003-04-18

мне нужно чтобы запрос выдал мне записи с 5 по 9ю
Название: помогите плз составить запрос
Отправлено: xRUSha от 16 Апреля 2003, 13:43:59
Цитировать
первым запросом получи последние 2 даты
вторым - все записи по ним


Хорошая идея, но все-таки хотелось одним запросом. Задачка то выглядит совсем не сложной.

Кстати - у нас в универе (ГУАП) щас идет курс Базы данных. Так вот препод меня послал - помочь не захотел (скорей всего не смог), а единственное, на что сослался - это на функции работы с датой.
Название: помогите плз составить запрос
Отправлено: fidget от 16 Апреля 2003, 15:04:07
> Хорошая идея, но все-таки хотелось одним запросом.

не получится.
это только со вложенными запросами можно сделать, но в 4.1. версии MySQL где они уже реализованы (я так поняла у тебя MySQL или я ошиблась?) LIMIT еще не поддерживается во вложенных запросах кажется, а без него никак не получить 2 даты.
Название: помогите плз составить запрос
Отправлено: xRUSha от 16 Апреля 2003, 15:12:06
Жаль. Я думал это возможно. А про 4.1 - мне на хостинге сказали, что это еще альфа версия и они конечно могут для меня ее установить, но следить за ее возможными падениями они не берутся.
Название: помогите плз составить запрос
Отправлено: fidget от 16 Апреля 2003, 17:07:19
я же сказала, что даже в 4.1 вы этого не сделаете.
У них LIMIT во вложенных запросах только на 5.0 запланирован.
так что пока придется 2мя запросами довольствоваться.
Название: помогите плз составить запрос
Отправлено: xRUSha от 18 Апреля 2003, 09:50:22
я уже написал, спасибо
Название: помогите плз составить запрос
Отправлено: Croaker от 18 Апреля 2003, 15:10:05
а что, если сделать отдельную таблицу только для дат, а потом выбирать с помощю JOIN из двух таблиц сразу, установив LIMIT 2 на таблицу с датами?
Название: помогите плз составить запрос
Отправлено: xRUSha от 21 Апреля 2003, 09:15:53
Этот запрос (вернее скрипт из которого он делается) выводит последние обновления. Не жирно ли ему 2 таблицы
Название: помогите плз составить запрос
Отправлено: Croaker от 21 Апреля 2003, 13:01:30
xRUSha
Не жирно. Ты придумал как сделать иначе?
Название: помогите плз составить запрос
Отправлено: xRUSha от 22 Апреля 2003, 11:38:11
двумя запросами:
select distinct data from table_name ORDER BY data DESC limit 2
SELECT * FROM newvideo WHERE data = \'$d[$i]\'

хотя мне это решение не очень нравится