Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с запросом выборки, ограниченного количества записей 
:(
    Опции темы
EasyTask
Дата 4.5.2012, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.7.2010

Репутация: нет
Всего: нет



Код

create table channel(channel_id INTEGER, name VARCHAR(255));
insert into channel values(1, 'ОРТ');
insert into channel values(2, 'Россия');
insert into channel values(3, 'Спорт');

create table peredacha(channel_id INTEGER,name VARCHAR(255), date VARCHAR(255));
insert into peredacha values(1,'Прожектор1', '15:00');
insert into peredacha values(1,'Прожектор2', '18:00');
insert into peredacha values(1,'Прожектор3', '21:00');
insert into peredacha values(1,'Прожектор4', '22:00');
insert into peredacha values(2,'Прожектор5', '20:00');
insert into peredacha values(2,'Прожектор6', '23:00');
insert into peredacha values(3,'Прожектор7', '23:00');

Написать запрос, который выберет для каждого канала две первые передачи после 17:00 


Вот такое у меня задание smile Главный вопрос - как сделать так, чтобы вывелось две предачи? (начал с джойна)

Код

SELECT * FROM peredacha p INNER JOIN channel c ON c.channel_id = p.channel_id and date > '17:00'

PM MAIL   Вверх
Akina
Дата 4.5.2012, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Код

select
  q1.* 
from 
(
  select
    dt.*
  , if
    ( @typex=dt.channel_id
    , @rownum:=@rownum+1
    , @rownum:=1+least(0,@typex:=dt.channel_id)
    ) rown 
  from
    (
      select
        c.channel_id
      , c.name c_name
      , p.name p_name
      , p.date
      from
        channel c
      , peredacha p
      where 
        c.channel_id = p.channel_id
    ) dt
  , (
    select
      @rownum:=1
    , @typex:='_'
    ) q2
  where
    dt.date > '17:00'
  order by
    dt.channel_id
  , dt.date DESC
) q1
where q1.rown < 3;



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.2967 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.