powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужна помощь в составлении сложного запроса
13 сообщений из 13, страница 1 из 1
Нужна помощь в составлении сложного запроса
    #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
Нужна помощь в составлении сложного запроса
    #39024175
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
holyguest,

left join .....on 1=1
...
Рейтинг: 0 / 0
Нужна помощь в составлении сложного запроса
    #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
Нужна помощь в составлении сложного запроса
    #39024187
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ну это само собой
...
Рейтинг: 0 / 0
Нужна помощь в составлении сложного запроса
    #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
Нужна помощь в составлении сложного запроса
    #39024191
holyguest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий, да, сделаю. прошу отдельно рассмотреть только вновь добавленную строку
...
Рейтинг: 0 / 0
Нужна помощь в составлении сложного запроса
    #39024195
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Holyguest!
You wrote on 6 августа 2015 г. 11:59:44:

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

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

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

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

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


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