Имя: Пароль:
1C
 
Как создать в 1С аналог простого запроса sql?
0 Господин ПЖ
 
27.05.10
13:23
select *
from tbl
where tbl.price between
         (select min(price)+2 from Prices)
       and
         (select Avg(price)-1 from Prices)


ЗЫ на МЕЖДУ(ВЫБРАТЬ...) И (ВЫБРАТЬ...) страшно ругается на синтаксис
1 Shurjk
 
27.05.10
13:25
попробуй перед вторым выбрать В поставить
2 Господин ПЖ
 
27.05.10
13:29
не прет. оно сразу матерится на первый МЕЖДУ(<<?>>ВЫБРАТЬ...)
3 i-rek
 
27.05.10
13:30
присоедини эти два селекта левым соединением к первому
4 NcSteel
 
27.05.10
13:31
(0) Имхо . Ни как .

Только соединениями
5 Sabbath
 
27.05.10
13:42
Прям чтоб аналог не сделаешь, подзапросами вытащи минимальную и среднюю цену сначала.. ну или есть еще куча методов через соединения.
А после слова где в 1С не вытащишь скалярное значение подзапросом как в sql, насколько я знаю. Тут возможно сравнение с результатом запроса только через В, поэтому если МЕЖДУ и др. будет ругаться.
6 Лефмихалыч
 
27.05.10
13:53
где-то как-то так
SELECT VZ.*
ПОМЕСТИТЬ VT
FROM(select min(price)+2 as MIN, NULL AS AVG
from Prices
UNION ALL
select NULL, Avg(price)-1
from Prices)AS VZ
;
SELECT tbl.* FROM tbl.price
INNER JOIN VT ON tbl.price BETWEEN VT.MIN AND VT.AVG
7 Лефмихалыч
 
27.05.10
13:54
только запрос, из которого строится временная таблица надо сгруппировать и NULL заменить на 0
8 Лефмихалыч
 
27.05.10
13:55
ну, то ест не сгруппировать, а просуммировать
9 Hmster
 
27.05.10
13:57
ВЫБРАТЬ
   1 КАК Поле1
ПОМЕСТИТЬ еее

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   4
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СРЕДНЕЕ(еее.Поле1) КАК Поле1
ПОМЕСТИТЬ Сред
ИЗ
   еее КАК еее
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   МИНИМУМ(еее.Поле1) КАК Поле1
ПОМЕСТИТЬ Мин
ИЗ
   еее КАК еее
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Мин.Поле1
ИЗ
   (ВЫБРАТЬ
       еее.Поле1 КАК Поле1
   ИЗ
       еее КАК еее
           ВНУТРЕННЕЕ СОЕДИНЕНИЕ Мин КАК Мин
           ПО еее.Поле1 >= Мин.Поле1) КАК Мин
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           еее.Поле1 КАК Поле1
       ИЗ
           еее КАК еее
               ВНУТРЕННЕЕ СОЕДИНЕНИЕ Сред КАК Сред
               ПО еее.Поле1 <= Сред.Поле1) КАК Сред
       ПО Мин.Поле1 = Сред.Поле1