2017-06-19 75 views
0

我尝试为我的项目制作过滤器。我想了解如何在内部连接中使用数组值。例如,我有这样的查询。阵列的内部连接使用

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName 
FROM Orders 
INNER JOIN Employees 
ON Orders.EmployeeID = Employees.EmployeeID; 

但我有多个EmployeeID s在数组中,我尝试使我的查询是这样的。

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName 
FROM Orders 
INNER JOIN Employees 
ON Orders.EmployeeID = Employees.1,2,3; 

这是我知道的错误的方式,但我真的不知道做出这个查询的正确方法。

+0

加入所有员工,然后限制他们在'where'子句中。 'ON Orders.EmployeeID = Employees.EmployeeID where Orders.EmployeeID in(1,2,3)' – chris85

回答

0

没有必要担心,如果有任意数量的命令映射的员工ID的行会返回,如果存在多行,而只使用一个where in条款

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName 
FROM Orders 
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID 
WHERE Employees.EmployeeID IN (1,2,3);` 
0

你可以这样做,

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName 
FROM Orders 
INNER JOIN Employees 
ON Orders.EmployeeID = Employees.EmployeeID where Employees.EmployeeID IN (1,2,3); 

内与员工ID加入将获取两个订单,员工与员工ID条件的所有匹配的记录,然后对where子句来获取那些记录员工ID是1,2,3。

0

你可以使用in运营商在on条款:

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName 
FROM Orders 
INNER JOIN Employees 
ON Orders.EmployeeID = Employees.EmployeeID and Employees.EmployeeID in (1,2,3);