Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

соединение нескольких таблиц SQL

соединение нескольких таблиц SQL
Я
   Игорь_МММ
 
04.12.17 - 14:22
Command.CommandText = "Select DISTINCT
        |        TElems_2.CommonPOS,
        |        TElems_2.FurnType,
        |        TNNomenclature.Name AS Nomenclature,
        |        TElems_2.Name AS ElemName,
        |        TElems.UnitPos,
        |        TElems_2.ParentPOS,    
        |        TElems_2.Count
        |FROM TElems
        |LEFT JOIN TElems TElems_2 
        |ON TElems.UnitPos=TElems_2.ParentPOS    
        |LEFT JOIN TNNomenclature TNNomenclature
        |ON TElems.PriceID=TNNomenclature.ID
        |ORDER BY TElems.UnitPos,TElems_2.FurnType";
гуру, подскажите в чем здесь проблема? 
по поиску вроде такой же пример -https://technet.microsoft.com/ru-ru/library/ms191430(v=sql.105).aspx
ан, не взлетает ...
 
 
   Ненавижу 1С
 
1 - 04.12.17 - 14:24
и в чем вопрос?
   Ёпрст
 
2 - 04.12.17 - 14:24
(0) Что именно "не взлетает" ?
   Игорь_МММ
 
3 - 04.12.17 - 14:25
Произошла исключительная ситуация (Microsoft JET Database Engine): Ошибка синтаксиса (пропущен оператор) в выражении запроса 'TElems.UnitPos=TElems_2.ParentPOS    
LEFT JOIN TNNomenclature TNNomenclature
ON TElems.PriceID=TNNomenclature.ID'.
   Ёпрст
 
4 - 04.12.17 - 14:29
(3)
|FROM TElems TElems
   Beduin
 
5 - 04.12.17 - 14:29
(0) Ты поля проверил? Все в наличии есть.
   Ёпрст
 
6 - 04.12.17 - 14:30
ну и лучше, норм алиясы задавать
   Игорь_МММ
 
7 - 04.12.17 - 14:36
(4) Command.CommandText = "Select DISTINCT
        |        TElems_2.CommonPOS,
        |        TElems_2.FurnType,
        |        TNNomenclature.Name AS Nomenclature,
        |        TElems_2.Name AS Name,
        |        TElems_1.UnitPos,
        |        TElems_2.ParentPOS,    
        |        TElems_2.Count
        |FROM TElems TElems_1
        |LEFT JOIN TElems TElems_2 
        |ON TElems_1.UnitPos=TElems_2.ParentPOS    
        |LEFT JOIN TNNomenclature TNNomenclature
        |ON TElems_1.PriceID=TNNomenclature.ID
        |ORDER BY TElems_1.UnitPos,TElems_2.FurnType";

та же ... :
Произошла исключительная ситуация (Microsoft JET Database Engine): Ошибка синтаксиса (пропущен оператор) в выражении запроса 'TElems_1.UnitPos=TElems_2.ParentPOS    
LEFT JOIN TNNomenclature TNNomenclature
ON TElems_1.PriceID=TNNomenclature.ID'.

если без второго соединения все ОК. То же самое если убираю первое соедиение - тоже Ок. Что-то в соединениях ... между ними
(5) все есть
   пипец
 
8 - 04.12.17 - 15:18
(7) хмм а если в SSMS визуально нарисовать ?
   Ц_У
 
9 - 04.12.17 - 18:16
(7)
        |FROM TElems TElems_1
        |LEFT JOIN TElems TElems_2
что тут должно произойти?
   Сергиус
 
10 - 05.12.17 - 02:23
(7)

|LEFT JOIN TNNomenclature TNNomenclature
|ON TElems_1.PriceID=TNNomenclature.ID

Попробуй здесь дать псевдоним, отличный от имени таблицы, например TNNomenclature_1
 
 Рекламное место пустует
   rphosts
 
11 - 05.12.17 - 04:39
(7) ну вообще-то предикат соединения принято оборачивать в () для лучшей читаемости. А те поля по которым соединяете они соединяемы (со строкой неограниченой длины вам соединить не получится)?
   rphosts
 
12 - 05.12.17 - 04:49
Count как имя поля - жесть!
   rphosts
 
13 - 05.12.17 - 04:51
select a.[_Period], b._Fld1841RRef, c._Period
from [dbo].[_InfoRg1840] a
left join [dbo].[_InfoRg1840] b on (a.[_Fld2027] = b.[_Fld2027])
left join [dbo].[_InfoRg1840] c on (a.[_Fld2032] = c.[_Fld2032])

отрабатывает на ура

смотри что ты с чем там соединяешь

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует