Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Вложенный запрос, нужна помощь (число прочтений - 5018 )
Shtam
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 14. Ноября 2006
Вложенный запрос, нужна помощь
29. Января 2007 :: 10:25
Печать  
Постепенно усложняю себе задачи, добрался и до вложенных запросов:
     |SELECT
     |      ВложенныйЗапрос.Товар Товар,
     |      ВложенныйЗапрос.Цена_2 Цена_2,
     |      ВложенныйЗапрос.Спец_Цена Спец_Цена
     |FROM
     |      (SELECT
     |            Номенклатура.ID as [Товар $Справочник.Номенклатура],
     |            Категория.ID as Ссылка1,
     |            $Категория.Категория as [Кат $Перечисление.КатегорииЦен],
     |            CASE
     |                  WHEN $Категория.Категория = :Цена_2
     |                        THEN $Категория.Цена
     |                  ELSE NULL
     |            END as Цена_2,
     |            CASE
     |                  WHEN $Категория.Категория = :Спец_Цена
     |                        THEN $Категория.Цена
     |                  ELSE NULL
     |            END as Спец_Цена
     |      FROM
     |            $Справочник.Номенклатура as Номенклатура
     |                  LEFT JOIN $Справочник.КатегорииЦен as Категория
     |                  ON Категория.ParentEXT = Номенклатура.ID) as ВложенныйЗапрос
     |
     |GROUP BY
     |      ВложенныйЗапрос.Товар,
     |      ВложенныйЗапрос.Цена_2,
     |      ВложенныйЗапрос.Спец_Цена";
     RS.УстановитьТекстовыйПараметр("Цена_2", Перечисление.КатегорииЦен.Цена_2);
     RS.УстановитьТекстовыйПараметр("Спец_Цена", Перечисление.КатегорииЦен.Спец_Цена);

Invalid column name 'Товар'.
где накосячил? понять пока не в силах
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вложенный запрос, нужна помощь
Ответ #1 - 29. Января 2007 :: 10:33
Печать  
типизацию нужно вынести во внешний select-list
  
Наверх
ICQ  
IP записан
 
Shtam
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 14. Ноября 2006
Re: Вложенный запрос, нужна помощь
Ответ #2 - 29. Января 2007 :: 11:51
Печать  
спасибо, все заработало Улыбка. А на T-SQL что-то вроде команды "свернуть"(как в 1с) имеется?
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вложенный запрос, нужна помощь
Ответ #3 - 29. Января 2007 :: 12:08
Печать  
Может наведет на идею:

Код
Выбрать все
-- Группировать, как в 1с.
-- Т.е. если есть несколько одинаковых строк, то после выполнения скрипта будет только одна.
--
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'T1' AND type = 'U') DROP TABLE T1
GO

CREATE TABLE T1 (
	rowid int IDENTITY(1, 1),
	fld char(1) NOT NULL
)
GO

INSERT INTO t1 (fld) VALUES ('a')
INSERT INTO t1 (fld) VALUES ('a')
INSERT INTO t1 (fld) VALUES ('b')
INSERT INTO t1 (fld) VALUES ('c')
INSERT INTO t1 (fld) VALUES ('d')
INSERT INTO t1 (fld) VALUES ('d')
INSERT INTO t1 (fld) VALUES ('d')
INSERT INTO t1 (fld) VALUES ('e')
INSERT INTO t1 (fld) VALUES ('f')
GO

SELECT * FROM t1
GO

DELETE FROM T1
	WHERE T1.rowid NOT IN (SELECT Q.mid FROM (SELECT fld, MAX(rowid) as mid FROM T1 GROUP BY fld) as Q)
GO

SELECT * FROM t1
GO
 

  
Наверх
ICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Вложенный запрос, нужна помощь
Ответ #4 - 29. Января 2007 :: 16:11
Печать  
spock писал(а) 29. Января 2007 :: 12:08:
Может наведет на идею:


А что, SELECT DISTINCT уже отменили?
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Вложенный запрос, нужна помощь
Ответ #5 - 29. Января 2007 :: 16:13
Печать  
ЗЫЖ

А полноценному "Свернуть"  скорее соответствует

Select
a,b, sum(c), sum(d)
...
group by a,b
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Shtam
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 14. Ноября 2006
Re: Вложенный запрос, нужна помощь
Ответ #6 - 30. Января 2007 :: 06:57
Печать  
спасибо, сделал через сумму
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать