Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.31;
Скачать: CL | DM;

Вниз

Правильный запрос на FireBird SQL   Найти похожие ветки 

 
Barsky   (2008-02-29 09:29) [0]

Здравствуйте.
Есть таблица остатков по счетам за даты с полями Account RestDate, в которых записаны счета и остатки по ним соответственно. Записи ведутся только при изменении остатка что может быть не ежедневно.
Задача получить остаток на любую дату.
Я знаю 2 варианта решения задачи но оба меня не устраивают:

1 Вариант:
SELECT * FROM Table1 WHERE Account=... AND RestDate<=... ORDER BY RestDate DESC
И берем первую запись.
Минус что приходится с сервера много данных тянуть.

2 Вариант:

SELECT MAX(RestDate) WHERE  Account=... AND RestDate<=...

и уже зная дату последнего изменения делаем второй запрос:

SELECT * FROM Table1 WHERE Account=... AND RestDate=(Дата из предыдущего запроса)

Все хорошо, но в 2 запроса.

У MySQL есть "Limit" позволяющий отобрать определенное число записей, в FireBird такого не нашел. Как поступить правильно? Можно ли получить остаток на дату одним запросом?


 
Сергей М. ©   (2008-02-29 09:33) [1]


> Минус что приходится с сервера много данных тянуть


Можно и не тянуть, если разместить этот запрос в ХП


 
Sergey13 ©   (2008-02-29 09:36) [2]

> [0] Barsky   (29.02.08 09:29)
> 2 Вариант:

> Все хорошо, но в 2 запроса.

SELECT * FROM Table1 WHERE Account=... AND RestDate=(SELECT MAX(RestDate) WHERE  Account=... AND RestDate<=... )


 
Sergey13 ©   (2008-02-29 09:53) [3]

> [0] Barsky   (29.02.08 09:29)
> У MySQL есть "Limit" позволяющий отобрать определенное число
> записей, в FireBird такого не нашел.

Или TOP или FIRST - заклинило, не могу вспомнить.


 
Barsky   (2008-02-29 09:59) [4]

Сергей М., что такое ХП?

Sergey13, Спасибо, подозревал о варианте [2], но ниразу не пользовался такими конструкциями. Top и First тоже попробую.

Спасибо.


 
Сергей М. ©   (2008-02-29 10:11) [5]


> Barsky   (29.02.08 09:59) [4]


Хранимая процедура


 
Barsky   (2008-02-29 10:27) [6]

Хорошо, но пока еще книжку не купил, а наугад не получится.

Спасибо.


 
Правильный_Вася   (2008-02-29 10:59) [7]


> FireBird SQL

инструментарий сильно зависит от неуказанной версии


 
Сергей М. ©   (2008-02-29 11:02) [8]


> книжку не купил, а наугад не получится


Наугад и не надо.
А материалы по FB можно найти в достаточном кол-ве на ibase.ru


 
Johnmen ©   (2008-02-29 12:50) [9]


> У MySQL есть "Limit" позволяющий отобрать определенное число
> записей,

Это вовсе не значит, что запрос не отработан полностью, т.е., что не обработаны все записи с получением отобранных. Просто это сделано на сервере, без закачки на клиента; траффик сэкономили, но и только...


 
Barsky   (2008-03-03 17:03) [10]

Версия 2.0

Нашел оператор ROWS. Штука аналогичная LIMIT.
Разобрался с ХП.
Попробовал в ХП делать 1 запросом (С ROWS и без) и 2-мя (сначала MAX дата, а потом уже 1 запись). Скорость почти не отличается. 1 запросом быстрее.


 
Johnmen ©   (2008-03-03 17:06) [11]


> Barsky   (03.03.08 17:03) [10]

Тихо сам с собою?


 
Barsky   (2008-03-03 17:08) [12]

Может кому-нибудь еще пригодится, не сваливать же как только решил свою проблему =)


 
Johnmen ©   (2008-03-03 17:12) [13]

Это [11] я перегрелся. Это другому человеку, в другой форум, на другом сайте... :)
Забудь :)))


 
Barsky   (2008-03-03 17:13) [14]

=)



Страницы: 1 вся ветка

Текущий архив: 2008.08.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
2-1216888966
evgenij
2008-07-24 12:42
2008.08.31
Пропадает рисунок на канве


3-1202463519
Prohodil Mimo
2008-02-08 12:38
2008.08.31
Можно ли определить таблицу и запись , которая не даёт удалить...


1-1197619669
Константин
2007-12-14 11:07
2008.08.31
uses необходимое


2-1216986372
navigator1
2008-07-25 15:46
2008.08.31
Файл в константу


1-1197552021
Zheksik
2007-12-13 16:20
2008.08.31
запретить вывод на консоль