Вход | Регистрация
 
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])

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

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

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