Соединение данных в таблицах прямых SQL запросов

1. alexfps79 29.10.24 17:24 Сейчас в теме
Здравствуйте, коллеги!

Я подключаюсь к базе SQL по ADO. База 1С самописная. Мне нужно из документа получить номенклатуру и поставщика. Номенклатура в табличной части находится, а поставщик в основной таблице:

Поставщик это поле FLD49, но тут добавляется суффикс, получается мне нужно делать inner join но по какому полю я не очень понимаю, см. продолжение ниже:

SEL ECT TOP (1000) [_IDRRef]
      ,[_Version]
      ,[_Marked]
      ,[_Date_Time]
      ,[_Number]
      ,[_Posted]
      ,[_Fld48RRef]
      ,[_Fld49RRef]
      ,[_Fld3027]
      ,[_Fld11121RRef]
      ,[_Fld11122]
      ,[_Fld11186]
      ,[_Fld2267]
  FROM [1c_SKLAD].[dbo].[_Document30]

Показать


Справочник "Поставщики" это _Reference25. Соединение нужно делать по полю _IDRRef = _Fld49RRef
SELECT TOP (1000) [_IDRRef]
      ,[_Version]
      ,[_Marked]
      ,[_PredefinedID]
      ,[_Code]
      ,[_Description]
      ,[_Fld1609]
      ,[_Fld1610]
      ,[_Fld1611]
      ,[_Fld1612]
      ,[_Fld1613]
      ,[_Fld1614]
     FR OM [1c_SKLAD].[dbo].[_Reference25]
Показать

Буду благодарен за подсказки и советы. Если брать выборку напрямую получается COM-объект ComAsArray из бинарных данных. Картинки прилагаю.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 29.10.24 18:33 Сейчас в теме
(1) Вроде же очевидно, что
SEL ECT
     T1.*,
     T2.*
FR OM
     [1c_SKLAD].[dbo].[_Document30] T1
          INNER JOIN [1c_SKLAD].[dbo].[_Reference25] T2
          ON T1._Fld49RRef = T2._IDRRef
3. booksfill 29.10.24 18:38 Сейчас в теме
Ну вы же все написали, или вопрос в чем-то еще?

Берете документ, находите по какому полю он связан с табличной частью, лень искать, сами разберетесь, пусть это будет мнэээ "Полуэкт" _IDRRefDOC. Далее элементарно, псевдокод (если надо именно 100 док-ов, то с предварительным их отбором во временную таблицу (SEL ECT TOP 100*
INTO #tmpTestTable
FROM [1c_SKLAD].[dbo].[_Document30])

SELECT  TOP 100 100 A.*, B.*, C.* FR OM [1c_SKLAD].[dbo].[_Document30] AS A
LEFT JOIN [1c_SKLAD].[dbo].[_Reference25] AS B
ON B._IDRRef = A._Fld49RRef 
INNER JOIN [1c_SKLAD].[dbo].[_YOUR_TABLE_WITH_GOODS] AS C
ON C._IDRRefDOC = A.[_IDRRef]


Зачем оно вам надо через ADO понятия не имею.
На всякий случай, где вы там бинарные данные в выборке нашли не знаю, разве, что тащите хранилища значений или строки неограниченной длины. Проще говоря BLOB and CBLOB.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот