Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Вложенные таблицы в полях выборки (число прочтений - 4181 )
shavkat59
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 2
Зарегистрирован: 14. Июля 2008
Вложенные таблицы в полях выборки
14. Июля 2008 :: 10:01
Печать  
     Как получить в полях выборки поле, значением которого будет таблица значений?
Есть такой запрос :
   Текст = "
     |SELECT 
     |      Спр.ID,
     |      Спр.Descr               AS  Наименование,
     |   (SELECT
     |      СпрОКЕИ.DESCR AS ЕдиницаНаим
     |       FROM
     |            $Справочник.Единицы  AS Ед 
     |       LEFT JOIN
     |             $Справочник.ОКЕИ AS СпрОКЕИ ON СпрОКЕИ.ID = $Ед.ОКЕИ
     |       WHERE Ед.ParenTEXT = Спр.ID
     |  ) as Единица   
     |FROM
     |      $Справочник.Номенклатура AS Спр   " ;

Здесь Справочник.Единицы - подчиненный справочник Номенклатуры.

Здесь третье поле выборки таблица, количество строк которой - количество единиц измерений у Спр.  Ругается вот так :

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression, что в переводе звучит примерно так :
Subquery Возвращал более, чем 1 величину. Это не разрешено когда subquery следует за =, !=, <, <= , >, >= или когда subquery использовано как выражение.

Если указано во вложенной таюлице более одного поля выборки, то ругается еще на стадии контроля :

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS,
что означает примерно следующее :

Только одно выражение может быть определено в списке выбора когда subquery не введено 
Почему Subquery не введено  и где его вводить ?
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Вложенные таблицы в полях выборки
Ответ #1 - 14. Июля 2008 :: 10:09
Печать  
MS SQL такое не поддерживает
  
Наверх
ICQ  
IP записан
 
shavkat59
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 2
Зарегистрирован: 14. Июля 2008
Re: Вложенные таблицы в полях выборки
Ответ #2 - 14. Июля 2008 :: 10:11
Печать  
Такое удобство только в воьмерке доступно что ли ?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Вложенные таблицы в полях выборки
Ответ #3 - 14. Июля 2008 :: 11:47
Печать  
Nick писал(а) 14. Июля 2008 :: 10:09:
MS SQL такое не поддерживает

Неужто?

Автор, мне кажется что восьмерка тоже не поддерживает ТАКОЕ
Почитай еще раз сообщение скуля Улыбка
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вложенные таблицы в полях выборки
Ответ #4 - 14. Июля 2008 :: 12:20
Печать  
Цитата:
Nick писал(а) 14. Июля 2008 :: 10:09:
MS SQL такое не поддерживает

Автор, мне кажется что восьмерка тоже не поддерживает ТАКОЕ
Почитай еще раз сообщение скуля Улыбка

+1
8-ка поддерживает задание просто имени приджойненной таблицы (т.е. вывести все поля этой таблицы) в селект-листе, а не запрос в селект-листе.
Т.е. ответ - выполни джойн для своей доп.таблицы и выведи ее в селект.
Правда, не уверен, что в скуле так можно, без задания полей Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вложенные таблицы в полях выборки
Ответ #5 - 16. Июля 2008 :: 18:44
Печать  
Насколько помню, то теория СУБД такого не поддерживает, в любом поле может храниться заведомо известное значение. Если вы хотите хранить в поле структуру - то в поле будет ссылка на такую структуру.

Выход - сделать внешний джойн или 2 запроса с UNION-ом:
Например:
Код
Выбрать все
     |SELECT
     |	Спр.ID,
     |	Спр.Descr AS  Наименование,
	 |	СпрОКЕИ.DESCR AS Единица
     |FROM
     |	$Справочник.Номенклатура AS Спр
	 |LEFT JOIN
     |		 $Справочник.Единицы AS Ед ON Ед.ParenTEXT = Спр.ID
     |LEFT JOIN
     |		 $Справочник.ОКЕИ AS СпрОКЕИ ON СпрОКЕИ.ID = $Ед.ОКЕИ   

  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать