Как объединить два запроса, удалив внутреннее имя запроса в MS Access - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть две таблицы. Одна таблица имеет номер этажа (tb_FloorNumber.FloorNumber. Records: например, с 1 по 15), а другая таблица содержит столбец с номером этажа и User_Id (tb_Emp_Master.FloorNumber, tb_Emp_Master.User_Id). Я хочу принести все записи из tb_FloorNumber и только записи из tb_Emp_Master с условием (User_Id = "fat35108").

enter image description here

Я знаю, что я можно сделать это с помощью двух запросов, например: Запрос 1:

SELECT DISTINCT tb_Emp_Master.FloorNumber
FROM tb_Emp_Master
WHERE (((tb_Emp_Master.User_Id)="fat35108"));

Query2:

SELECT DISTINCT tb_FloorNumber.FloorNumber, Query1.FloorNumber
FROM tb_FloorNumber LEFT JOIN Query1 ON tb_FloorNumber.FloorNumber = Query1.FloorNumber;

Но я хочу написать этот запрос с помощью запроса sing вместо использования Query1 внутри Query 2.

Я пытался так:

SELECT DISTINCT tb_FloorNumber.FloorNumber, tb_Emp_Master.FloorNumber
FROM tb_FloorNumber LEFT JOIN tb_Emp_Master ON tb_FloorNumber.FloorNumber = tb_Emp_Master.FloorNumber
WHERE (((tb_Emp_Master.User_Id)="fat35108"));

Но он приносит только одну запись (например, 8)

Пожалуйста, помогите мне, как написать это

1 Ответ

1 голос
/ 27 февраля 2020

Если вы установите условие:

tb_Emp_Master.User_Id = "fat35108"

в предложении WHERE, тогда вы фактически получите INNER JOIN вместо LEFT JOIN, поскольку вы фильтруете только совпадающие строки из tb_Emp_Master , Используйте tb_Emp_Master в LEFT JOIN вместо Query1 и задайте условие в предложении ON:

SELECT DISTINCT
  tb_FloorNumber.FloorNumber, 
  tb_Emp_Master.FloorNumber
FROM tb_FloorNumber LEFT JOIN tb_Emp_Master 
ON tb_FloorNumber.FloorNumber = tb_Emp_Master.FloorNumber AND tb_Emp_Master.User_Id = "fat35108";

Я не знаю, зачем вам нужен DISTINCT, поэтому я тоже его использую .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...