我正试图在AdventureWorks上回答这个问题:

打印关于所有Sale.Person及其销售配额的信息.对于每个销售人员,您应该提供他们的名字、姓氏、雇佣日期、休假时间和他们工作的地区.

这就是我所能做到的:

SELECT 
    Person.FirstName, Person.LastName, 
    Employee.HireDate, Employee.SickLeaveHours, 
    SalesPerson.SalesQuota, SalesTerritory.CountryRegionCode
FROM
    Person.Person, HumanResources.Employee, 
    Sales.SalesPerson, Sales.SalesTerritory
WHERE
    Person.BusinessEntityID = Employee.BusinessEntityID;

但它并没有完全回答这个问题,我正在努力将桌子连接在一起.

推荐答案

使用proper ANSI INNER JOIN来连接表,最好也使用table aliases来使您的查询更易于理解和更具可读性:

SELECT 
    p.FirstName, p.LastName, 
    e.HireDate, e.SickLeaveHours, 
    sp.SalesQuota, st.CountryRegionCode
FROM
    Person.Person p
INNER JOIN 
    HumanResources.Employee e ON e.BusinessEntityID = p.BusinessEntityID
INNER JOIN
    Sales.SalesPerson sp ON sp.BusinessEntityID = e.BusinessEntityID
INNER JOIN
    Sales.SalesTerritory st ON st.TerritoryID = sp.TerritoryID

Sql相关问答推荐

SQL查询以条件空值跟踪生产操作结果进展

如何通过比较不同表中相同ID S的值来筛选ID为S的列表?

Postgres,使用iLike运算符从json数组中搜索的工作方式与从常规表中搜索不同

在多个柱上连接时,如何确定连接条件?

Access 365将文本转换回BigInt

将重复的值更新为下一个空闲数字

在数据库中搜索列

对多个条件的SQL进行排名

具有多个条件的SQL否定

Oracle中的时间戳

数据库SQL-CTE命名空间(错误?)使用临时视图

PATINDEX中与[A-Z]匹配(U除外)的正则表达式

使用递归CTE在BigQuery中获取文件路径

Oracle PL/SQL长期运行问题

如何获取每个组中最近的n条记录并将它们聚合成数组

在 MS Access VBA 中,如何测量显示查询的时间?

oracle中多行的跨日期范围的交集

T-SQL 查询计算日期在其他列中定义的日期之间绑定的行数

超过100名员工的连续行

在时态表和非时态表之间使用 EXCEPT 的 SQL 子查询给出表达式错误数