Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужна помощь в составлении сложного запроса / 13 сообщений из 13, страница 1 из 1
06.08.2015, 11:39
    #39024168
holyguest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
Здравствуйте! Есть запрос вида

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select 
  a.ItemID, a.Name, a.Price, a.Quantity, a.OrderID, ... ,
  b.OrderID, b.Status, b.Destination, b.CustomerID, ... ,
  c.CustomerID, ... ,
  d. ... ,
from
  Items a, Orders b, Customers c, ...
where
  a.OrderID = b.OrderID and
  c.CustomerID = b.CustomerID and
  ..... 



И есть процедура, в которую в качестве параметра передаётся Items.ItemID. Процедура возвращает одно значение (всегда). Оттестирована и работает как мне нужно. Как мне добавить выборку из этой процедуры в запрос с передачей в него Items.ItemID?
Сейчас поясню:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select 
  a.ItemID, a.Name, a.Price, a.Quantity, a.OrderID, ... ,
  b.OrderID, b.Status, b.Destination, b.CustomerID, ... ,
  c.CustomerID, ... ,(select Cost from CalculateDelivery(a.ItemID)) as ShippingCost,
  d. ... ,
from
  Items a, Orders b, Customers c, ...
where
  a.OrderID = b.OrderID and
  c.CustomerID = b.CustomerID and
  .....
  ShippingCost > 100



Я прекрасно понимаю, что бред ( (select Cost from CalculateDelivery(a.ItemID)) as ShippingCost, ) не работает. Я написал это, чтобы было понятно, чего я хочу: вставить выполнение процедуры в тело самого запроса, передать внутрь параметр a.ItemID, обозвать результат как ShippingCost и, более того, отбирать по значению этого самого "поля". Подскажите по синтаксису, как это верно оформить?
Про for select ... do я знаю и даже немножко умею, но нужно именно в запросе.
Может это можно каким-то образом затолкать в HAVING ?
Буду рад любым предложениям. Спасибо!

Если бы здесь убивали за тупые вопросы, то я бы сдох в первый же день
...
Рейтинг: 0 / 0
06.08.2015, 11:46
    #39024175
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
holyguest,

left join .....on 1=1
...
Рейтинг: 0 / 0
06.08.2015, 11:50
    #39024183
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
Hello, M7m!
You wrote on 6 августа 2015 г. 11:50:28:

M7m> left join .....on 1=1
только сам запрос переделать на явный JOIN.
не нужно смешивать стили синтаксиса.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.08.2015, 11:51
    #39024187
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
Мимопроходящий,

ну это само собой
...
Рейтинг: 0 / 0
06.08.2015, 11:54
    #39024189
holyguest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
m7m,
не знаю, правильно ли я понял:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select 
  a.ItemID, a.Name, a.Price, a.Quantity, a.OrderID, ... ,
  b.OrderID, b.Status, b.Destination, b.CustomerID, ... , cd.Cost ShippingCost,
  c.CustomerID, ... ,
  d. ... ,
from
  Items a, Orders b, Customers c, ...
  left join CalculateDelivery(a.ItemID) cd on 1 = 1
where
  a.OrderID = b.OrderID and
  c.CustomerID = b.CustomerID and
  .....
...
Рейтинг: 0 / 0
06.08.2015, 11:56
    #39024191
holyguest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
Мимопроходящий, да, сделаю. прошу отдельно рассмотреть только вновь добавленную строку
...
Рейтинг: 0 / 0
06.08.2015, 12:00
    #39024195
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
Hello, Holyguest!
You wrote on 6 августа 2015 г. 11:59:44:

Holyguest> прошу отдельно рассмотреть только вновь добавленную строку
без переписывания всего остального на JOIN, строку добавлять преждевременно.
ну а саму идею ты понял правильно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.08.2015, 12:09
    #39024211
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
holyguestЯ прекрасно понимаю, что бред ((select Cost from
CalculateDelivery(a.ItemID)) as ShippingCost,) не работает.
Кто тебе сказал такую глупость?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.08.2015, 12:11
    #39024216
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
m7mleft join
А что, DT уже объявлены вне закона?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.08.2015, 12:19
    #39024227
holyguest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
Dimitry Sibiryakov, я имел ввиду внутри контекста, в который я его включил в первом сообщении. само по себе, конечно, вполне
...
Рейтинг: 0 / 0
06.08.2015, 12:43
    #39024246
holyguest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
m7m,

И еще — не сочтите за наглость — но, чтобы я уже окончательно понял: что происходит, когда мы в join'е пишем "on 1=1". Интуитивно понятно, что это верно, но как это обрабатывается?
Я предполагаю, что это просто тождество и сюда подойдет любое заведомо истинное выражение. Это как "while true do"
...
Рейтинг: 0 / 0
06.08.2015, 12:44
    #39024247
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
Hello, Holyguest!
You wrote on 6 августа 2015 г. 12:45:29:

Holyguest> Это как "while true do"да

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.08.2015, 18:20
    #39024591
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении сложного запроса
holyguest> что происходит, когда мы в join'е пишем "on 1=1"

Ничего не происходит, это лишь для обмана парсера.
А "происходит" внутри процедуры для переданного Id.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужна помощь в составлении сложного запроса / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]