如何从db中合并这些SQL查询的最佳方法。
我正在使用此功能但希望在可能的情况下将其他两个添加到其中
SELECT m.username, sum(d.liter) AS TOT_LITERS, min(krl) AS TOT_KM
FROM members m JOIN
diesel d
ON (d.userid = m.id)
WHERE d.dato >= '$dx'
GROUP BY m.username
ORDER BY 2 DESC;
和另外两个
SELECT SUM(liter) AS totalfuel
FROM diesel
WHERE diesel.dato >= '$dx' AND userid = ".$_COOKIE['userid']."
ORDER BY diesel.dato DESC
SELECT MIN(km) AS minikm, MAX(km) AS maxkm
FROM diesel
WHERE diesel.dato >= '$dx' AND userid = ".$_COOKIE['userid']."
ORDER BY diesel.dato DESC
他们三个都按我的预期行事,但我想必须有比在同一页面上有三个查询更好的方法
UNION是否可以去这里?我不知道为什么他们需要有相同数量的表:P?
编辑:这次我不需要用户ID和那个cookie。只是忘了删除它。我正在制作一个高分,并希望显示用户名,平均气体,公里驱动,升充满等。
答案 0 :(得分:0)
以下是子查询的示例:
SELECT m.username,
(
SELECT SUM(liter) AS SumOfLiters
FROM diesel
WHERE diesel.dato >= '$dx'
AND diesel.IDField = d.IDField
) AS TotalFuel
FROM members m
JOIN diesel d ON d.userid = m.id
WHERE d.dato >= '$dx'
子查询(在括号中)返回一个可以分配给字段的值(在本例中为TotalFuel)。
答案 1 :(得分:-1)
而不是限制where子句中的所有内容,然后尝试将其全部结合,您可以使用您的顶级查询以及一些总和案例,例如
sum(case when userid = '.$_COOKIE['userid'].' then liter else 0 end)