powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Внешнее присоединение LEFT JOIN
5 сообщений из 5, страница 1 из 1
Внешнее присоединение LEFT JOIN
    #39312265
joiner34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые форумчане!

Суть такова.
Есть база с таблицами работ- Work, материалов-Mat и привязки материалов к определенным работам -WorkMat. Связь между Mat и Work через WorkMat многие-ко-многим. Т.е. для некоторых работ есть материалы и любой материал может использоваться для разных работ. Пример в Access вложен с примером моего пробного запроса.

Поля Работы (Work) - ID_Work(ключ), Name, Union
Поля Материалов (Mat) - ID_Mat(ключ), Name, Union
Связывающая таблица (WorkMat) - ID_Work(ключ), ID_Mat(ключ), Rashod (Расход материала для конкретной работы)

Связь один-ко-многим Work.ID_Work -> WorkMat.ID_Work
Связь один-ко-многим Mat.ID_Mat -> WorkMat.ID_Mat

Нужно сделать запрос, который бы брал таблицу материалов (Mat) и присоединял к ней столбцы из таблицы WorkMat. Но нужно, чтобы в присоединямых столбцах брались только записи для ОДНОЙ работы, т.е. нужен фильтр, например WorkMat.ID_Work=2

Запрос пока в таком виде:

Код: sql
1.
2.
3.
SELECT Mat.*, WorkMat.*
FROM Mat LEFT JOIN WorkMat ON Mat.ID_Mat = WorkMat.ID_Mat
ORDER BY Mat.[Name];



что и как мне нужно прикрутить, что бы заработало в Access. Пробовал после JOIN подзапрос сделать, но, видимо что-то неправильно делаю.
...
Рейтинг: 0 / 0
Внешнее присоединение LEFT JOIN
    #39312319
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему LEFT JOIN? когда логика событий требует связывания внутреннего...
...
Рейтинг: 0 / 0
Внешнее присоединение LEFT JOIN
    #39312323
joiner34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И в чем логика, если мне нужно к таблице Mat присоединить таблицу WorkMat. Таблица Mat должна остаться как есть. Из таблицы WorkMat надо выбрать строки только одной работы и подтянуть к таблице Mat/
Во вложении пример. Упростил до предела.
...
Рейтинг: 0 / 0
Внешнее присоединение LEFT JOIN
    #39312332
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полной ясности нет, но предположу, что нужен запрос по всем записям таблицы Mat и выбранным по ID_Work данным WorkMat
Код: sql
1.
2.
3.
SELECT Mat.*, z.*
FROM Mat LEFT JOIN (select * from WorkMat where ID_Work=1) z ON Mat.ID_Mat = z.ID_Mat
ORDER BY Mat.[Name];
...
Рейтинг: 0 / 0
Внешнее присоединение LEFT JOIN
    #39312334
joiner34
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, отлично. Только присвоение алиаса подправил через 'AS z' сделал.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Внешнее присоединение LEFT JOIN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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