MYSQL 查询帮助 JOIN 表

标签 mysql sql

我在查询时遇到了一些问题,希望有人可以指导我解决这个问题?我想这应该是可以实现的。我有两张 table 。表 A 存储小时数,表 B 存储驾驶时间。我正在努力让所有每天工作超过 6 小时的人都能够做到这一点。但我还需要获取特定日期的驾驶时间,他们一天的驾驶时间超过 6 小时。我希望我说得有道理。这是我现在正在使用的查询,正在努力让每天工作超过 6 小时的每个人也能获得分钟数。行驶时间存储在名为 ies_mileage 的表 B 中,字段为持续时间。我尝试了几件事但没有成功。

SELECT 
    wk_date,
    full_name, 
    SUM(hours) AS HOURS 
FROM `ies_weekly` 
    LEFT JOIN infant_specialist 
        ON ies_weekly.is_id = infant_specialist.is_id 
WHERE wk_date BETWEEN '2015-01-16' AND '2015-01-31' 
GROUP BY 
    DAY(wk_date), 
    ies_weekly.is_id 
HAVING SUM(hours) > 6 
ORDER BY full_name  ASC

这是有效的,当我尝试添加持续时间时,总数变得困惑并且不再准确。这是我尝试过的

SELECT 
    wk_date,
    full_name, 
    SUM(hours) AS HOURS, 
    SUM(duration) AS minutes 
FROM 
    `ies_weekly` 
    LEFT JOIN infant_specialist 
        ON ies_weekly.is_id = infant_specialist.is_id 
    LEFT JOIN ies_mileage 
        ON ies_weekly.wk_date = ies_mileage.mil_date 
        AND ies_weekly.is_id = ies_mileage.ies_id 
WHERE wk_date BETWEEN '2015-01-16' AND '2015-01-31' 
GROUP BY 
    DAY(wk_date), 
    ies_weekly.is_id 
HAVING SUM(hours) > 6
ORDER BY full_name  ASC

最佳答案

SELECT full_name, wk_date, SUM(hours) HOURS,
    (Select Sum(duration)
     From ies_mileage
     Where mil_date = w.wk_date
         and ies_id = w.is_id) DrivingTime
FROM ies_weekly w
    LEFT JOIN infant_specialist i
     ON i.is_id = w.is_id 
WHERE wk_date BETWEEN '2015-01-16' AND '2015-01-31' 
GROUP BY DAY(wk_date), w.is_id 
HAVING SUM(hours) > 6 
ORDER BY full_name ASC

关于MYSQL 查询帮助 JOIN 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28485813/

相关文章:

php - 如何使用 Laravel 为不同的客户使用不同的数据库?

javascript - html td问题: hide a td value if another has a value 'not available'

mysql - React/Redux - 将项目存储在状态中并将其发送到数据库

mysql - 如何使用 MySQL 选择有 2 个具有特定值的连续行?

sql - 将空白放入 INTEGER 数据类型 oracle

SQL 使用不同条件两次使用相同字段

mysql - 如何在 Windows 中的 MySQL 服务器上启用 SSL 连接

c# - Mysql数据库列数的图表

sql - 在 PostgreSQL 中从数组转换值

sql - 函数不返回任何内容 Postgresql