powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Запрос. Связь таблиц по полям составного типа данных
10 сообщений из 10, страница 1 из 1
Запрос. Связь таблиц по полям составного типа данных
    #37852953
Rudge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1-ая таблица1: поле1_1(составной тип данных:Справочник1, Справочник2), поле1_2(какое-то число, всегда не NULL)
2-ая таблица2: поле2_1(составной тип данных аналогично поле1_1), поле2_1(какое-то число, всегда не NULL).
Справочник1 и Справочник2 связаны реквизитом.
Нужно гарантировано состыковать таблицы по поле1_1 = поле2_1, чтобы не было значений NULL.
...
Рейтинг: 0 / 0
Запрос. Связь таблиц по полям составного типа данных
    #37852979
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не указать в запросе режим соеденения ЛЕВОЕ|ПРАВОЕ|ПОЛНОЕ ВНЕШНЕЕ , то получите необходимый результат.

Если не указать, то (из справки):
[ВНУТРЕННЕЕ] СОЕДИНЕНИЕ означает, что из обеих исходных таблиц – источников данных в результат запроса необходимо включить только те комбинации записей, которые соответствуют указанному условию. Остальные записи в результат не попадают.

Ключевое слова ВНУТРЕНЕЕ можно не указывать вообще, оно повышает наглядность и удобочитаемость текста запроса.
...
Рейтинг: 0 / 0
Запрос. Связь таблиц по полям составного типа данных
    #37853037
Rudge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал внутреннее соединение - вообще пустая выборка.

Объясню более подробно, у меня 1-ая таблица содержит количество планируемого объема работы по полю ТС (составной тип данных: Справочник.ТранспортныеСредства или Справочник.МодельТС), 2-ая таблица содержит нормы расхода ГСМ, где измерение ТС также составного типа(Справочник.ТранспортныеСредства или Справочник.МодельТС). Оба справочника ТранспортныеСредства или МодельТС связаны реквизитом.
Т.е. получается если в 1-й таблице выбрано ТС, а во 2-й таблице нормы установлены на Модель, то как составить запрос, чтобы он в любом случае установил соответствие и взял норму расхода?
...
Рейтинг: 0 / 0
Запрос. Связь таблиц по полям составного типа данных
    #37853039
LexaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выбрать
Таб1.Поле1 как Справочник1,
Таб1.Поле2 как Число1,
Таб2.Поле1 как Справочник2,
Таб2.Поле2 как Число2
из
Таб1
внутреннее соединение
Таб2
по Выразить(Таб1.Поле1 как Справочник.Справочник1).Реквизит= Выразить(Таб2.Поле1 как Справочник.Справочник2).Реквизит

...
через Выразить приводим Поле1 к нужному виду справочника
...
Рейтинг: 0 / 0
Запрос. Связь таблиц по полям составного типа данных
    #37853131
Rudge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Справочник1 связан со Справочник2 реквизитом Рек1(тип СправочникСсылка.Справочник2).

Тогда в условии сцепления пишу так:

по Выразить(Таб1.Поле1 как Справочник.Справочник1).Рек1= Выразить(Таб2.Поле1 как Справочник.Справочник2).Ссылка

Работает, но получается теперь наоборот, для тех случаев когда типы совпадают(поле1_1 = Справочник1 и поле1_1=Справочник1), возвращает NULL.
...
Рейтинг: 0 / 0
Запрос. Связь таблиц по полям составного типа данных
    #37853167
LexaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rudge,
Для ссылки (ссылок) не надо писать выразить.

... = Выразить(Таб2.Поле1 как Справочник.Справочник2).Ссылка , это можно заменить
на
... = Таб2.Поле1
...
Рейтинг: 0 / 0
Запрос. Связь таблиц по полям составного типа данных
    #37853193
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RudgeСправочник1 связан со Справочник2 реквизитом Рек1(тип СправочникСсылка.Справочник2).

Тогда в условии сцепления пишу так:

по Выразить(Таб1.Поле1 как Справочник.Справочник1).Рек1= Выразить(Таб2.Поле1 как Справочник.Справочник2).Ссылка

Работает, но получается теперь наоборот, для тех случаев когда типы совпадают(поле1_1 = Справочник1 и поле1_1=Справочник1), возвращает NULL.

Точнее такой строки нет в результате?

Используйте ОБЪЕДЕНИТЬ и указывайте разные условия объеденения или в условии объединения используйте ВЫБОР.
...
Рейтинг: 0 / 0
Запрос. Связь таблиц по полям составного типа данных
    #37853290
Rudge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем. Объединил и упростил, теперь выводит то, что нужно.

ВЫБРАТЬ
<...>
по Выразить(Таб1.Поле1_1 как Справочник.Справочник1).Рек1= Таб2.Поле2_1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
<...>
по Таб1.Поле1_1 = Таб2.Поле2_1
...
Рейтинг: 0 / 0
Запрос. Связь таблиц по полям составного типа данных
    #37853321
LexaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rudge,

можно упростить ваш запрос

ВЫБРАТЬ
<...>
по Выразить(Таб1.Поле1_1 как Справочник.Справочник1).Рек1= Таб2.Поле2_1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
<...>
по Таб1.Поле1_1 = Таб2.Поле2_1

--------------------------

ВЫБРАТЬ
<...>
по Выразить(Таб1.Поле1_1 как Справочник.Справочник1).Рек1= Таб2.Поле2_1
или Таб1.Поле1_1 = Таб2.Поле2_1
...
Рейтинг: 0 / 0
Запрос. Связь таблиц по полям составного типа данных
    #37853444
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем что-то выражать?
Код: sql
1.
2.
3.
4.
5.
SELECT ...
INNER JOIN ...
UNION [ALL]
SELECT ...
INNER JOIN ...


такой конструкции вполне достаточно.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Запрос. Связь таблиц по полям составного типа данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]