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

Суть такова.
Есть база с таблицами работ- 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
20.09.2016, 23:01
    #39312319
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнее присоединение LEFT JOIN
А почему LEFT JOIN? когда логика событий требует связывания внутреннего...
...
Рейтинг: 0 / 0
20.09.2016, 23:19
    #39312323
joiner34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнее присоединение LEFT JOIN
И в чем логика, если мне нужно к таблице Mat присоединить таблицу WorkMat. Таблица Mat должна остаться как есть. Из таблицы WorkMat надо выбрать строки только одной работы и подтянуть к таблице Mat/
Во вложении пример. Упростил до предела.
...
Рейтинг: 0 / 0
21.09.2016, 00:52
    #39312332
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнее присоединение LEFT JOIN
Полной ясности нет, но предположу, что нужен запрос по всем записям таблицы 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
21.09.2016, 01:16
    #39312334
joiner34
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнее присоединение LEFT JOIN
Спасибо, отлично. Только присвоение алиаса подправил через 'AS z' сделал.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Внешнее присоединение LEFT JOIN / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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