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

Вниз

Возможно ли реализовать одним запросом на SQL, без использования   Найти похожие ветки 

 
_Lucky_   (2005-09-05 18:31) [0]

Есть три таблицы, назовем их условно А,Б,В.

Таблица А состоит из:
- ИД
- Название организации

Таблица Б состоит из:
- ИД
- номер счета
- ИД организации

Таблица В состоит из:
- ИД
- дата операции
- сумма операции
- ИД счета

И есть сформированный список, назовем его Х (сформирован тоже SQL запросом), в котором имеется:
- ИД
- дата операции
- сумма операции
- номер счета

А получить нужно следующие:
список операций из списка Х или их ИД, которые являются первой операцией по своему счету.

Т.е. смысл в следующем надо узнать является ли операция из Х первой по счету, ну соответственно у нее будет min (дата операции). Вот только у меня такой запрос составить ну не как не получилось, в голову пришла только ХП, а надо непременно запрос, причем один.


 
Johnmen ©   (2005-09-05 18:42) [1]

Тип БД, конечно, военная тайна...


 
_Lucky_   (2005-09-06 13:09) [2]

Нет, тип бд не военная тайна, точнее тебя наверное интересует СУБД, так она Oracle, версия 8 кажется, хотя точно не уверен, но что не меньше восьмерки это точно, если надо могу посмотреть.

Хотя когда я постил сообщение я выбирал Oracle, странно.


 
Sergey13 ©   (2005-09-06 13:27) [3]

На вскидку. Не оптимально наверное.
Добавь поле в свою выборку Х
(select min (дата операции) from B where номер счета=головной запрос.номер счета) as min_Date
По разнице "дата операции" и "min_Date" поймешь - она или нет.


 
_Lucky_   (2005-09-06 17:55) [4]

Вся фишка в том, что никуда и ничего я добавить не могу, у меня есть клиентское место, на котором есть формочка с выборкой Х, но на этой формочке есть фильтр, типа там можно разные поля задать и отфильтровать, а в этом фильтре есть поле "дополнительно", где можно эти поля сравнивать каким нить особенным способом, как выяснилось в этом поле также выполняется SQL код, после чего мной был написан кусочек кода, что-то типа
ID IN (SELECT ID FROM A,B,C WHERE ...) который нормально работал, но он написан для другой задачи, а вот с этой ну не как не получается, вся проблемма именно в определении операции. А оптимальное решение или нет мне не важно, мне надо запускать такую операции раз в месяц.


 
Sergey13 ©   (2005-09-07 09:18) [5]

2[4] _Lucky_   (06.09.05 17:55)
Ну и попробуй поиграться с моим запросом.
Типа
дата операции <> (select min (дата операции) from B where номер счета=головной запрос.номер счета)


 
RUYurik   (2005-09-08 08:51) [6]

Пример для InterBase:

select x.id, min(x.date_O), x.Sum_O, x.Account
from xQuery x
group by x.id, x.Sum_O, x.Account


 
_Lucky_   (2005-09-08 12:47) [7]


> RUYurik   (08.09.05 08:51) [6]
> Пример для InterBase:
>
> select x.id, min(x.date_O), x.Sum_O, x.Account
> from xQuery x
> group by x.id, x.Sum_O, x.Account


Интересно и что он покажет? Это наверное не будет полное решение на сколько я понимаю. По идее, в результате будет

ИД, дата_первой_операции, сумма_первой_операции, номер_счета
ИД, дата_первой_операции, сумма_первой_операции, номер_счета
ИД, дата_первой_операции, сумма_первой_операции, номер_счета
ИД, дата_первой_операции, сумма_первой_операции, номер_счета
.....
ИД, дата_первой_операции, сумма_первой_операции, номер_счета

или я что-то не так понял


 
Dilmo   (2005-09-09 08:23) [8]

select X.*
from X a, B b
where a.ID = b.ID
 AND a.DATA = (select min(DATA)
               from B aa, Б bb
               where aa.ACCID = bb.ID
                 AND bb.ACCNUM = a.ACCNUM)

вроде так, при условии что поле ID в Х является ID в B



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

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

Наверх




Память: 0.49 MB
Время: 0.044 c
14-1128065585
data
2005-09-30 11:33
2005.10.23
Всех работников образования с профессиональным праздником!


3-1126593341
yurri
2005-09-13 10:35
2005.10.23
Нет изменений в таблице (ADOQuery, MSSQL)


14-1128404400
Rentgen
2005-10-04 09:40
2005.10.23
Torry опять упал?


3-1126514955
erika
2005-09-12 12:49
2005.10.23
Смена пароля у SYSDBA


14-1128432314
Weiss
2005-10-04 17:25
2005.10.23
Связь с интернетом