繁体   English   中英

通过PHP有条件地计数MYSQL列行和输出数据

[英]Conditionally Count a MYSQL Column Rows and Output Data via PHP

对不起,我对此并不陌生。 只是想学习。 我试图使用大小写和计数功能有条件地计算SQL中特定条件发生的次数。 这将计算存储在eeg表中的男性/女性数量。 这是我的SQL查询。

SELECT  COUNT(CASE WHEN `Gender` = 'Male' THEN 1 END), 
        COUNT(CASE WHEN `Gender` = 'Female' THEN 1 END) 
FROM `eeg`

当我在mysql后端(phpmyadmin)上运行查询时,这将输出数据,但是在我的php文件中,这2行出现“未定义索引”错误。 所有其他行都很好。 我不知道如何将这些特定的数据集输出到变量。

这是php文件中的SQL查询(完整内容):

$result = mysql_query("SELECT MONTH(ScanDate), YEAR(ScanDate), 
                            COUNT(Investigation), 
                            COUNT(CASE WHEN `Gender` = 'Male' THEN 1 END), 
                            COUNT(CASE WHEN `Gender` = 'Female' THEN 1 END), 
                            SUM(InvestigationAmount), SUM(AmountDue)  
                        FROM eeg 
                        WHERE Investigation = '{$investigation}' 
                          AND ScanDate BETWEEN '{$ScanDate1}' 
                          AND '{$ScanDate2}'");

这是while循环(完整):

while($row=mysql_fetch_array($result)){ 
    $month_doe=$row['MONTH(ScanDate)']; 
    $year_doe=$row['YEAR(ScanDate)'];
    $si=$row['COUNT(Investigation)'];
    $male=$row["COUNT(CASE WHEN 'Gender' = 'Male' THEN 1 END)"];
    $female=$row["COUNT(CASE WHEN 'Gender' = 'Female' THEN 1 END)"];
    $sum_investigation=number_format($si);
    $sia=$row['SUM(InvestigationAmount)'];
    $sum_investigationamount=number_format($sia);
    $srd=$row['SUM(AmountDue)'];
    $sum_rebatedue=number_format($srd);
}

谢谢您的帮助。 从字面上拉我的头发,但喜欢学习和改进。 是的,mysql_query已弃用:D

屏幕截图如下:

代码截图

在此处输入图片说明

为表达式使用别名,并使用别名从php访问表达式的结果:

$result = mysql_query("SELECT MONTH(ScanDate) as sdyear,
                              YEAR(ScanDate) as sdmonth, 
                            COUNT(Investigation) as investigation, 
                            COUNT(CASE WHEN `Gender` = 'Male' THEN 1 END) as MaleCount, 
                            COUNT(CASE WHEN `Gender` = 'Female' THEN 1 END) as FemaleCount, 
                            SUM(InvestigationAmount) as investigationamount, 
                            SUM(AmountDue) as amountdue 
                        FROM eeg 
                        WHERE Investigation = '{$investigation}' 
                          AND ScanDate BETWEEN '{$ScanDate1}' 
                          AND '{$ScanDate2}'");


while($row=mysql_fetch_array($result)){ 
    $month_doe=$row['sdmonth']; 
    $year_doe=$row['sdyear'];
    $si=$row['investigation'];
    $male=$row["MaleCount"];
    $female=$row["FemaleCount"];
    $sum_investigation=number_format($si);
    $sia=$row['investigationamount'];
    $sum_investigationamount=number_format($sia);
    $srd=$row['amountdue)'];
    $sum_rebatedue=number_format($srd);
}

我将对作为表达式的每个字段(上述查询中的其他sum()字段)使用此方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM