[英]Group MySQL results using PHP
我的數據庫中有一個表,其中存儲有大約100個人的數據。 它存儲着他們何時開始工作以及婚姻狀況和出生城市等信息。
CREATE TABLE `entries` (
`id` int(11) NOT NULL,
`city` varchar(255) NOT NULL,
`commencement_date` varchar(255) NOT NULL,
`marital_status` varchar(255) NOT NULL,
`employment_status` varchar(255) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
INSERT INTO `entries` (`id`, `city`, `commencement_date`, `marital_status`, `employment_status`) VALUES
(1, 'Glasgow', '01/04/2017', 'Married', 'Employed'),
(2, 'Glasgow', '04/04/2017', 'Married', 'Self-Employed'),
(3, 'Edinburgh', '01/04/2017', 'Single', 'Self-Employed'),
(4, 'Glasgow', '04/04/2017', 'Single', 'Employed'),
(5, 'North London', '01/04/2017', 'Divorced', 'Unemployed'),
(6, 'Glasgow', '04/04/2017', '', 'Self-Employed');
ALTER TABLE `entries`
ADD PRIMARY KEY (`id`);
我使用以下PHP從數據庫中獲取此數據:
$sql = "SELECT * FROM entries WHERE city = '$city' AND (commencement_date BETWEEN '$dateStart' AND '$dateEnd')";
$result = $conn->query($sql);
但是,我想知道,是否有可能使用PHP來計算已婚,單身和離婚的總數並將其列出在項目符號列表中?
最好,我的腳本應該輸出:
Married: 2
Single: 2
Divorced: 1
我只是想知道是否有使用PHP進行整潔的方法。
您可以嘗試此查詢。 我希望它能起作用。
$sql = "SELECT marital_status, count(*)
FROM entries
GROUP BY marital_status";
$result = mysql_query($sql) or die(mysql_error());
您可以嘗試下面的查詢以獲取總計
$sql = "SELECT marital_status , count(id) as total FROM entries GROUP BY marital_status";
function totalEntriesBasedOnMartialStatus($conn, $marital_status){
$query = $conn->prepare("SELECT COUNT(id) as totalEntries FROM entries WHERE marital_status=:marital_status");
$query->execute(array(':marital_status'=>$marital_status));
$row = $query->fetch(PDO::FETCH_ASSOC);
return $row['totalEntries'];
}
請嘗試此功能,我希望它能起作用,您需要傳遞想要獲得總計的戒備狀態。
select id,
sum(case when marital_status = 'Single' then 1 else 0 end) singlesum,
sum(case when marital_status = 'Marrid' then 1 else 0 end) marridsum
from entries
order by id
您可以使用SQL:
SELECT marital_status, count(*) FROM `entries` GROUP BY marital_status
或PHP:
$count_married=$count_divorced=$count_single=0;
foreach($result as $next_result) {
if($next_result['marital_status'] === 'Divorced') {
$count_divorced++;
}
if($next_result['marital_status'] === 'Single') {
$count_single++;
}
if($next_result['marital_status'] === 'Married') {
$count_married++;
}
}
echo "Married: $count_married<br />\n";
echo "Single: $count_single<br />\n";
echo "Divorced: $count_divorced<br />\n";
請使用以下查詢准確獲取您想要的內容:
SELECT CONCAT(`marital_status`,":",COUNT(`id`)) FROM entries where marital_status!='' GROUP BY `marital_status` ORDER BY COUNT(`id`) DESC
希望對您有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.