我有这样的陈述:
select lastname,firstname,email,floorid
from employee
where locationid=1
and (statusid=1 or statusid=3)
order by floorid,lastname,firstname,email
问题是列floorid。此查询的结果显示了楼层的ID。
有一个名为floor的表(有30行),它有列id和floornumber。 floorid(在上面的语句中)值匹配表格的id。
我希望上面的查询将floorid值切换为floor table中floornumber列的关联值。
有人能告诉我该怎么做吗? 我正在使用Microsoft sql server 2008 r2。
我是sql的新手,如果可能的话,我需要一个清晰易懂的方法。
答案 0 :(得分:5)
select lastname,
firstname,
email,
floor.floornumber
from employee
inner join floor on floor.id = employee.floorid
where locationid = 1
and (statusid = 1 or statusid = 3)
order by floorid, lastname, firstname, email
答案 1 :(得分:1)
如果floorid匹配你的楼层表的id,你必须在你检查的地方做一个简单的连接。然后你使用桌子的floornumber。
select a.lastname,a.firstname,a.email,b.floornumber
from employee a
join floor b on a.floorid = b.id
where a.locationid=1 and (a.statusid=1 or a.statusid=3)
order by a.floorid,a.lastname,a.firstname,a.email
答案 2 :(得分:1)
您需要使用join
这将在某个字段上加入两个表格
这样,您当时可以从多个表中SELECT
列。
当您加入两个表时,您必须指定要加入它们的列
在你的例子中,你必须这样做:
from employee join floor on employee.floorid = floor.id
由于您不熟悉SQL,因此必须了解一些事项。对于此问题的其他人,人们使用aliases
而不是重复表名
from employee a join floor b
表示从现在开始,员工名称为a
,表格为b
。当你有很多连接时,这非常有用。
现在假设两个表都有一列name
。在您的选择中,您必须说明要从哪个表中选择列名称。如果你只写这个
SELECT name from Employee a join floor b on a.id = b.id
编译器无法理解您希望从哪个表中获取列name
。你必须这样指定:
SELECT Employee.name from Employee a join floor b on a.id = b.id
或者如果您喜欢别名:
SELECT a.name from Employee a join floor b on a.id = b.id
最后有很多类型的连接。
Join
即可引用内部联接。要引用this article about joins以了解如何正确使用它们。
希望这会有所帮助。