[英]Multiple SQL Select and Where on Same Table
我需要在MYSQL數據庫的一個表上進行查詢。 在此查詢中,我需要使用不同的位置進行多個選擇。
我當前的查詢是:
$result = mysql_query("
SELECT
last_name, first_name, user_name,
SUM(rthours) as rthours, SUM(othours) as others,
SUM(trthours) as trthours, SUM(tothours) as tot hours
FROM data
WHERE labor_date BETWEEN '$start' AND '$end'
ORDER BY last_name ASC
");
我還需要選擇以下兩個:
SUM(rthours) as vhours FROM data WHERE decription = 'vacation' AND labor_date BETWEEN '$start' AND '$end'
和
SUM(rthours) as shours FROM data WHERE decription = 'sick' AND labor_date BETWEEN '$start' AND '$end'
如何將所有三個選擇組合到一個查詢中,以便可以在隨后輸出的表中使用它們。
謝謝你的幫助!
您可以在SUM()
使用CASE
SELECT last_name, first_name, user_name,
SUM( CASE WHEN decription = 'vacation' AND labor_date BETWEEN '$start' AND '$end' THEN rthours ELSE 0 END) as rthours,
SUM(CASE WHEN decription = 'sick' AND labor_date BETWEEN '$start' AND '$end' THEN rthours ELSE 0 END) as shours,
SUM(othours) as othours,
SUM(trthours) as trthours,
SUM(tothours) as tothours
FROM data
WHERE labor_date BETWEEN '$start' AND '$end'
/*missing group by*/
Order by last_name ASC
對於聚合函數,您應該使用組函數
您可以使用UNION ALL
。 它將幾個查詢的結果合並到一個結果集中。
這將是一團糟,但是您可以將其作為子查詢來運行:
SELECT last_name, first_name, user_name, SUM(rthours) as rthours,
SUM(othours) as othours, SUM(trthours) as trthours,
SUM(tothours) as tothours,
(SUM(rthours) as vhours FROM data WHERE decription = 'vacation' AND labor_date BETWEEN '$start' AND '$end') AS vhours
(SUM(rthours) as shours FROM data WHERE decription = 'sick' AND labor_date BETWEEN '$start' AND '$end') AS shours
FROM data WHERE labor_date BETWEEN '$start' AND '$end' Order by last_name ASC
我無法運行這些表,因為我沒有表或數據,但是它的基本思想很重要
得到它了。
這有效:
$result = mysql_query("SELECT last_name, first_name,
SUM(CASE WHEN description = 'Vacation' THEN rthours ELSE 0 END) as vhours,
SUM(CASE WHEN description = 'Sick' THEN rthours ELSE 0 END) as shours,
SUM(rthours) as rthours,
SUM(othours) as othours,
SUM(trthours) as trthours,
SUM(tothours) as tothours
FROM data
WHERE labor_date BETWEEN '$start' AND '$end' Group by last_name Order by last_name ASC");
謝謝您的幫助!!!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.