2017-10-20 135 views
0

相当新的SQL编码区域并寻求一些帮助。SQL 2表查询

基本上有2个员工表1和1个存储他们付款明细的地方。

寻找一个查询,其中列出了他们的姓名和付款率存储在两个表中。

到目前为止,我有

SELECT paymentRate 
FROM inStore 
WHERE employeeID IN (SELECT employeeID 
        FROM employee 
        WHERE employeeID = 'C1234567') 

这给了我支付率的结果。我需要显示存储在employee表中的名称。然而,经过一段时间的故障排除后,我遇到了一些困难,我相信这很简单。但是,当我尝试更改我的查询时,我不断收到各种错误。任何援助将不胜感激!提前致谢!

+0

你在inStore平板电脑中是否有'employee_id'的外键,对吧? – Dalton

+0

尝试如下所示:'select e.employee_name,inS.paymentRate from employee e,inStore inS where e.employee_id = inS.employee_id' – Dalton

+0

如果您提供表模式,示例数据以及你试图产生的结果。 – Brian

回答

0

希望您的InStore表包含针对单个员工的多条记录。请参考下面的sql查询。这个查询是用T-SQL编写的。

DECLARE @Employee TABLE 
(
    Id  INT, 
    Name VARCHAR(MAX) 
) 

DECLARE @InStore TABLE 
(
    Id  INT, 
    Rate MONEY, 
    EmpId INT 
) 


INSERT INTO @Employee (Id, Name) 
VALUES (1,'ABC'),(2,'DEF'),(3,'GHI') 

INSERT INTO @InStore(Id, Rate, EmpId) 
VALUES (1, 10, 1), (2, 20, 2 ), (3, 30, 3),(4, 40, 3) 


SELECT emp.Id,emp.Name,SUM(ins.Rate) 
FROM @Employee emp 
INNER JOIN @InStore ins ON ins.EmpId = emp.Id 
GROUP BY emp.Id, emp.Name 
0

如果我理解了您的查询,您的意思是您希望在查询时显示员工姓名?如果是这样,你会想要使用联接作为你的SQL查询的一部分。

例如说,你要员工鲍勃·罗宾斯显示出来,你需要像一个查询如下:

SELECT i.paymentRate, e.FirstName, e.LastName FROM inStore as i 

inner join employee as e on i.employeeID = e.employeeID 
WHERE i.employeeID ='C1234567' 

的,因为我和e是光明正大的,所以你不会需要不断地重新输入建立别名的employee.firstname等一遍一遍

希望帮助

编辑:这将是很好的,以及有参照完整性目的

建立以及一个外键关系