#ms-access
#ms-access
Вопрос:
У меня есть существующий запрос (Query1), который возвращает 5 полей из таблицы. Затем я хочу выполнить другой запрос (Query2), который использует каждую запись из одного из полей, возвращаемых в Query1, для возврата полей из другой таблицы. Обе таблицы имеют общее поле (проект). Query1 возвращает проект и 4 дополнительных поля. Для каждой записи, возвращаемой запросом 1, я хочу запустить запрос2 на основе поля Project. Как мне спроектировать Query2?
Заранее спасибо за вашу помощь!
Ответ №1:
Поскольку обе таблицы имеют общее поле (Project), вы должны иметь возможность ОБЪЕДИНИТЬ их в одном запросе, не беспокоясь о подзапросах. Что-то вроде этого:
SELECT *
FROM Table2
INNER JOIN Table1 ON Table2.Project = Table1.Project;
Однако, если Query1 выполняет определенную операцию, чтобы вернуть только эти 5 записей, тогда вы можете просто объединить результаты Query1 с этой другой таблицей. Итак, ваш запрос2 может выглядеть так:
SELECT *
FROM Table2
INNER JOIN Query1 ON Table2.Project = Query1.Project;
Комментарии:
1. Большое вам спасибо за попытку помочь мне!! Я только что попробовал это, но он отображает все пробелы. В таблице 2 есть несколько элементов с одинаковым именем проекта. Это не проблема, не так ли?
2. Привет, Скотт. Можете ли вы опубликовать запрос, который вы пробовали?
3. ВЫБЕРИТЕ * ИЗ задач INNER JOIN Query1 в задачах. ProjectName = Query1.ProjectName;
4. Является ли ProjectName текстовым полем? Если это так, убедитесь, что значения в ProjectName написаны / отформатированы одинаково, не содержат лишних пробелов и т.д. В обеих таблицах. Объединение текстовых полей обычно не рекомендуется из-за этих проблем.