mysqli - 从具有相同字段的不同表中获取值
问题描述
我有一个网页,在 3 个月后计算 3 个月的总分。但是标记在不同的领域。所以我需要从具有相同字段的不同表中获取值。我使用了以下查询。任何人都可以更正此查询,因为使用此查询它会加载整个月的值而不是 3 个月的值。但是当我从单个表中获取时,它会正确加载
select empid,name,total1 from ((select *,sum(total)as total1
from formresult5 GROUP by empid) UNION (SELECT *,sum(total)as total1
FROM formresult4 GROUP by empid) UNION (SELECT *,sum(total)as total1
FROM formresult3 GROUP by empid) UNION (SELECT *,sum(total)as total1
FROM formresult2 GROUP by empid) UNION (select *,sum(total)as total1
FROM formresult GROUP by empid)) result
WHERE date BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01')
AND LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
AND branch='$branch' ORDER by total1 desc
我有 6 个表来存储 6 类分类员工的评估结果。empid(employee id), name, total 是所有表的相同字段,我需要获取相同的列,而 sum(total) 表示前三个月总分的总和,现在我已将代码编辑为
select empid,name,total1 from ((select *,sum(total)as total1 from formresult6 WHERE date BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01') AND LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) GROUP by empid)
UNION
(select *,sum(total)as total1 from formresult5 WHERE date BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01') AND LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) GROUP by empid)
UNION
(SELECT *,sum(total)as total1 FROM formresult4 WHERE date BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01') AND LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) GROUP by empid)
UNION
(SELECT *,sum(total)as total1 FROM formresult3 WHERE date BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01') AND LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) GROUP by empid)
UNION
(SELECT *,sum(total)as total1 FROM formresult2 WHERE date BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01') AND LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) GROUP by empid)
UNION
(select *,sum(total)as total1 from formresult WHERE date BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01') AND LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) GROUP by empid)) result
where branch='$branch'
ORDER by total1 desc
在此代码中,我的页面正常工作,在 phpmyadmin 中执行此代码时,它显示“当前选择不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用。” 我担心这个警告会影响我在网页中的代码执行 任何人都可以帮助我
解决方案
您没有展示您如何使用/定义 $branch - 如果您这样保留它,那么除非您的数据中有“$branch”,否则您将看不到任何东西。
推荐阅读
- svg - 在 SVG 中定位文本元素的字体大小和 x/y 百分比之间有什么关系?
- javascript - Firebase Realtime Database equalTo query for child in increasing keys
- haskell - 使用 IntelliJ-Haskell 插件在 IntelliJ 中创建 Haskell 项目时出错
- docker - 在 AWS Lambda 容器镜像中使用 Gradle 的 shadowJar
- java - Reactor onErrorContinue 运算符是否让原始序列继续?
- powershell - 使用 PowerShell 从证书中检索 KeySpec 值
- c - 我的 libsnark 合规性谓词程序有什么问题?
- javascript - 它返回未定义的:(我如何从数组中获取我想要的值
- c++ - CRTP 中的静态数据成员特化是否违反 ODR?
- reactjs - 我想我错过了一些关于 ReactJS 中的 useState() 钩子的相当基本的东西?