sql - 我在这个访问 SQL 查询中缺少什么?
问题描述
我正在尝试使用 INNER JOIN 函数从几个表中提取特定信息,但我认为我的语法有问题 - 思考太多或太少 ()。社区是怎么想的?
SELECT Employee.EmployeeID
,Service.HoursWorked
FROM (
Equipment INNER JOIN (Equipment Repair)
ON Equipment.EquipmentID = Equipment Repair.RepairID
)
INNER JOIN (
(
(
Service INNER JOIN EMPLOYEE
ON Service.ProductID = EMPLOYEE.EmployeeID
) INNER JOIN (
OWNER INNER JOIN Property
ON OWNER.OwnerID = Property.OwnerID
)
INNER JOIN SubProperty
ON Property.PropertyID = SubProperty.PropertyID
)
ON Service.PropertyID = Subproperty.PropertyID
)
INNER JOIN TrainingCourse
ON EMPLOYEE.EmployeeID = TrainingCourse.EmployeeID
ON Equipment.EquipmentID = TrainingCourse.EquipmentID ORDER BY Employee.EmployeeID
解决方案
您的查询正在尝试将多个表连接在一起,但您可能也在尝试使用括号?那些没有你在这里可能期望的效果。
如果没有(显然?)虚假括号,我会将该查询理解为:
SELECT
Employee.EmployeeID
,Service.HoursWorked
FROM Equipment
INNER JOIN (Equipment Repair)
ON Equipment.EquipmentID = Equipment Repair.RepairID
INNER JOIN Service
INNER JOIN EMPLOYEE
ON Service.ProductID = EMPLOYEE.EmployeeID
INNER JOIN OWNER
INNER JOIN Property
ON OWNER.OwnerID = Property.OwnerID
INNER JOIN SubProperty
ON Property.PropertyID = SubProperty.PropertyID
ON Service.PropertyID = Subproperty.PropertyID
INNER JOIN TrainingCourse
ON EMPLOYEE.EmployeeID = TrainingCourse.EmployeeID
ON Equipment.EquipmentID = TrainingCourse.EquipmentID
ORDER BY Employee.EmployeeID
但这仍然有错误,因为许多连接都缺少连接条件,有些连接有多个连接条件。
相反,您需要考虑您试图表达的投影操作。哪些表中的哪些列应该出现在结果集中(这告诉您要连接哪些表),以及在什么条件下表 Foo 中的一行应该出现在总结果集中(这告诉您该表的连接条件) .
推荐阅读
- php - call_user_func_array 非静态方法调用
- mysql - 在 VBA 中列出服务器的数据库和表
- java - 由于缺少 ServletWebServerFactory 无法启动 Web 服务器
- swift - 重置所有对象的核心数据布尔值
- spring - 如何将 Spring Boot 应用程序作为服务运行?
- gitlab-ci - 安装 kubectl
- java - 将 jxls 从 2.3.0 升级到 2.6.0 后,模板中的 Excel AVERAGE 函数无法正常工作
- android - Android App Bundle - 我的密钥不被接受,即使它是新的
- sql - 为什么在 where 子句中使用相关查询进行查询时结果集中没有相似的 id
- javascript - LocalStorage 在 iframe 中无法正常工作(SAFARI 浏览器)