簡體   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