mysql - 具有多个条件的 SQL 查询不起作用
问题描述
好的,这是我进行查询的最佳尝试。它目前正在执行,但没有返回任何其他尝试都没有奏效的内容。
我相信连接是错误的,我不确定如何修复它们或正确执行此操作
在此查询中,我试图获取分配给符合以下所有条件的活动的工作人员的活动详细信息。
员工和活动在分配表中链接,其中员工 ID 分配给那里的活动 ID。
-- 2019年在某个校区至少教授2个模块
StaffID 必须在 Teach 表中的 StaffID 字段中至少出现两次
spaID 5 或 6 将对应于校园,因此此时教授两个模块和 ID。
--监督超过 1 名同事
这是在员工表中,SupervisorID 是同一张表中 StaffID 的外键。
因此,分配给活动的员工 ID 需要监督多个同事,他们的 ID 在 SupervisorID 中出现多次。
--相关活动为内部活动
如果它等于 1,则该活动是内部的。
综上所述,只有当员工符合上述所有条件时,活动详情才会出现在查询结果中
SELECT Activity.AcID, Activity.Title, Activity.CaID, Activity.Internal, Activity.BuID, Budget.Amount FROM Activity
INNER JOIN Budget ON Activity.AcID = Budget.BuID
INNER JOIN Allocation ON Activity.AcID = Allocation.AcID
INNER JOIN Staff ON Allocation.StaffID = Staff.StaffID
INNER JOIN Teach ON Allocation.StaffID = Teach.StaffID
WHERE Activity.Internal=1 AND
Allocation.StaffID IN (
SELECT Staff.SupervisorID
FROM Staff
GROUP BY StaffID
HAVING COUNT(Staff.SupervisorID=Allocation.StaffID) >1)
AND Allocation.StaffID IN (
SELECT Teach.StaffID
FROM Teach
WHERE Teach.Year='2019' AND Teach.SpaID=5 OR 6
GROUP BY Teach.StaffID
HAVING COUNT(Allocation.StaffID=Teach.StaffID) >=2);
如果您想查看更多详细信息,请在下方查看表格详细信息
表活动——AcID, Title, CaID, BuID, Status, Started, Ended Internal
表分配——StaffID, AcID
表预算——BuID, Amount, Approver, Payee, Status
表校园——CaID, Address, GmName, Country, Status
餐桌教室——RmID, Capacity, CaID, Location, Type, Status
表模块 --ModuleID, Module Name, DeptID, Programme, TMode, Date_of_Firstoffer
表空间分配——SpaID, RmID, TID, Manager, Approved
餐桌人员——StaffID, Title, FirstName, LastName, DeptID, CaID, Joined, LeftD, Current, Salary, ContractType, SupervisorID
表教——TID, ModuleID, StaffID, SpaID, Semester, Year
我已尽力解释这一点,很抱歉有任何混淆。
解决方案
如果无法访问数据很难判断,但您可以尝试将其更改inner joins
为left joins
:
这个
WHERE Teach.Year='2019' AND Teach.SpaID=5 OR 6
应该
WHERE Teach.Year='2019' AND (Teach.SpaID=5 OR Teach.SpaID=6)
这看起来也不正确:
INNER JOIN Budget ON Activity.AcID = Budget.BuID
应该:
INNER JOIN Budget ON Activity.BuID = Budget.BuID
推荐阅读
- wpf - MahApps Metro MessageBox 样式与 CustomResourceDictionary
- android - 只有在没有更多工作时才停止后台服务
- json - 为嵌套模板创建第二个资源组
- php - 无法使用另一个文件中的 php 变量
- java - 密码的 doFinal() 不写入字节
- eclipse - Eclipse (2018-09) 带有 Cygwin 的 CDT 项目,无法调试二进制文件
- javascript - 以数组为参数的 Java 和 Javascript 绑定函数
- vue.js - Framework7 切换组件不是反应式的
- javascript - 如何在没有 toJS 的情况下从 immutable.js 有序映射中获取所有有序值?
- java - 将 xml bean 自动装配到 @Configuration 类中