簡體   English   中英

使用PHP將MySQL結果分組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM