Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
Sparton
- Сообщения: 28
- Зарегистрирован: 22 фев 2007, 10:38
Сообщение
Sparton » 20 сен 2007, 15:16
имеется запрос
Код: Выделить всё
SELECT ev.ID, ev.NAME,
(select first 1 skip 0 ee.www from events ee where ee.id_id = ev.id order by ee.data_on desc) www,
(select first 1 skip 0 ee.data_on from events ee where ee.id_id = ev.id order by ee.data_on desc) data_last
FROM EVENTS_MAIN ev
WHERE not exists (select e.id_id from events e where e.data_on>current_date AND e.id_id = ev.ID) AND ev.STATUS=1
order by data_last
не срабатывает, сообщает Column unknown.
DATA_LAST.
Как правильно указать, что упорядочивать по DATA_LAST?
-
dimitr
- Разработчик Firebird
- Сообщения: 888
- Зарегистрирован: 26 окт 2004, 16:20
Сообщение
dimitr » 20 сен 2007, 15:29
А в следующий раз, не забывай указывать версию сервера.
-
Sparton
- Сообщения: 28
- Зарегистрирован: 22 фев 2007, 10:38
Сообщение
Sparton » 20 сен 2007, 15:31
dimitr писал(а):
А в следующий раз, не забывай указывать версию сервера.
Точно! Благодарю! Не забуду)
-
Kotъ-Begemotъ
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
Сообщение
Kotъ-Begemotъ » 20 сен 2007, 22:40
Sparton писал(а):dimitr писал(а):
Точно! Благодарю! Не забуду)
Версию, впрочем так и не указал...

-
Sparton
- Сообщения: 28
- Зарегистрирован: 22 фев 2007, 10:38
Сообщение
Sparton » 21 сен 2007, 12:17
Kotъ-Begemotъ писал(а):
Версию, впрочем так и не указал...

Исправляюсь) FB 1.5))
Да, вот ещё такой вопрос возник, можно ли как то в запросе его решить,
Код: Выделить всё
select distinct(t1.ID), t1.NAME, t2.CATEGORY from tbl1
join tbl2 t2 ON(t2.ID_ID = t1.ID)
результатом будет
- 1 | авто | выставка
2 | авто | показ
Distinct в данном случае не сработал. Можно ли каким то образом брать только первую запись? Или вторую, без разницы. FB 1.5

-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 21 сен 2007, 12:26
Sparton писал(а):Distinct в данном случае не сработал.
Дистинкт в данном случае сработал, как нужно. Это ты не знаешь, что это такое

Почитай про FIRST / SKIP
-
Sparton
- Сообщения: 28
- Зарегистрирован: 22 фев 2007, 10:38
Сообщение
Sparton » 21 сен 2007, 14:14
WildSery писал(а):
Почитай про FIRST / SKIP
А если выборка такая
- 1 | авто | выставка
1 | авто | презентация
2 | авиа | шоу
2 | авиа | выставка
2 | авиа | чемпионат
3 | яхтинг | шоу
3 | яхтинг | соревнования
Так вот надо выбрать только скажем первый вид для типа, т.е. неважно какой вид у типа, авто - выставка или авто презентация. Нужен результат
- 1 | авто | выставка
2 | авиа | шоу
3 | яхтинг | шоу
First 1 skip 0 я возьму тока первую запись из выборки...
-
Slavik
- Сообщения: 115
- Зарегистрирован: 17 янв 2007, 11:52
Сообщение
Slavik » 21 сен 2007, 14:40
Код: Выделить всё
select t1.ID, t1.NAME, min(t2.CATEGORY)
from tbl1 t1 join tbl2 t2 on t2.ID_ID = t1.ID
group by t1.ID, t1.NAME
... и другие вариации на тему group by.