Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Вниз

Возможно ли реализовать одним запросом на 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.038 c
10-1105916731
GanibalLector
2005-01-17 02:05
2005.10.23
между закладками ;)


14-1128062530
Карелин Артем
2005-09-30 10:42
2005.10.23
Использование 2-х модемов при выходе в инет.


14-1127987477
Карелин Артем
2005-09-29 13:51
2005.10.23
Киньте в меня алгоритмами выбора оптимального пути из А в Б.


9-1117807991
D-Man
2005-06-03 18:13
2005.10.23
глюк с TGA в OpenGL


14-1128501142
глупенький
2005-10-05 12:32
2005.10.23
Time Server





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский