![]() |
![]() |
![]() |
|
Как создать в 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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |