SQL 2表查询

时间:2017-10-20 04:40:41

标签: sql

编码的SQL领域相当新,并寻求一些帮助。

基本上有2个表1用于员工,1个用于店员,这是存储其付款细节的地方。

希望查询列出两个表中存储的名称和付款率。

到目前为止我已经

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果我理解您的查询,您的意思是您希望在进行查询时显示员工姓名?如果是这样,您可能希望在SQL查询中使用Join。

例如,假设您希望员工Bob Bobbins出现,您将需要如下查询:

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等

希望有所帮助

编辑:为了参照完整性目的而建立外键关系也是好的