我有我试图同时使用两个查询。
查询1从工资单表产生数据的表。在工资表有可能是在同一天一个人的多个条目。因此,如果“hours_type”是一样的我想加在一起的时间,该查询产生它的结果之前。
SELECT `payroll`.*, `personnel`.`assigned_shift`
FROM `payroll`, `personnel`
WHERE `payroll`.`full_name`= `personnel`.`full_name`
AND `payroll`.`date` = '$f_date'
AND `personnel`.`assigned_shift` IN ('A', 'B', 'C')
ORDER BY `personnel`.`assigned_shift` ASC;
查询2将增加hours
在一起有full_name
和hours_type
相同重复的条目。从这个查询的结果是我想要查询#1使用重复的条目内容。
SELECT *, SUM(`hours`) AS `hours`
FROM `payroll`
GROUP BY `full_name`, `hours_type`
我已经试过联盟,联盟所有(学既不是列#是由于某种原因,不同的工作。)我不太明白如何子查询在子查询的工作,虽然我已经尝试了多种尝试。任何帮助将不胜感激。 (我是新来的SQL)。
我怀疑你的两个查询可以结合在一起,如下所示:
SELECT
pe.full_name,
pa.hours_type,
SUM(hours) hours
FROM
personel pe
LEFT JOIN payroll pa ON pa.full_name = pe.full_name AND pa.date = '$f_date'
WHERE
pe.assigned_shift IN ('A', 'B', 'C')
GROUP BY
pe.full_name,
pa.hours_type
ORDER BY p.assigned_shift
查询联接与personel
表payroll
表中的记录,并聚集由企业人事全名和小时类型的结果,总时间一起。
对于没有在这一天工资企业人事,将显示空hours_type
和hours
列的记录。为了不显示这些记录,可以切换到LEFT JOIN
INNER JOIN
。
您可以适应非aggragated场(pe.full_name
,“pa.hours_type
)如你所愿的列表;每一个非聚集领域也必须出现在GROUP BY
子句。
备注您的SQL代码:
SELECT *
:要具体说明要选择列GROUP BY
子句中(注意,这不符合SELECT *
发挥好)。谢谢GMB的响应。
之前,为了他的反应我能得到它的工作作为一个连接。这是任何人谁可能有类似的问题,我的工作的查询。
SELECT `payroll`.*, `personnel`.`assigned_shift`, SUM(`hours`) AS `hours`
FROM `payroll`
INNER JOIN `personnel` ON `payroll`.`full_name` = `personnel`.`full_name`
WHERE `date` = '$f_date' AND `personnel`.`assigned_shift` IN ('A', 'B', 'C')
GROUP BY `full_name`, `hours_type`
ORDER BY `personnel`.`assigned_shift`, `personnel`.`l_name`
很抱歉的回抽动MariaDB的人似乎都需要它们。