0
我有一個名爲「猜測」的表格,用於存儲人們猜測嬰兒是男孩還是女孩。這些是兩種可能的東西,在「性別」欄(即「男孩」或「女孩)。爲什麼COUNT(CASE WHEN ...)看起來停止了完整的MYSQL查詢檢索?
有4個猜測在表中該poolid。所以,如果我運行下面這段代碼...
$sql = "SELECT
FROM guesses
WHERE poolid = '$poolid'
ORDER BY $sort, createddate";
$getguesses = mysqli_query($connection, $sql);
if (!$getguesses) {
die("Database query failed: " . mysqli_error($connection));
} else {
//Get total number of guesses
$numguesses=mysqli_num_rows($getguesses);
echo "NUMGUESSES: $numguesses";
while ($row = mysqli_fetch_array($getguesses)) {
//code to grab other info about guesses, not relevant, works fine
}
}
它輸出
NUMGUESSES: 4
而且還吐出了4條線(每個猜測)和其它信息是不相關的。
我想的女孩猜測VS算總數男孩猜測,f或稍後在餅圖中使用。所以我做了以下...
$sql = "SELECT *, COUNT(CASE WHEN `sex` = 'girl' then 1 ELSE NULL END) as 'totalgirls', COUNT(CASE WHEN `sex` = 'boy' then 1 ELSE NULL END) as 'totalboys'
FROM guesses
WHERE poolid = '$poolid'
ORDER BY $sort, createddate";
$getguesses = mysqli_query($connection, $sql);
if (!$getguesses) {
die("Database query failed: " . mysqli_error($connection));
} else {
//Get total number of guesses
$numguesses=mysqli_num_rows($getguesses);
echo "NUMGUESSES: $numguesses";
while ($row = mysqli_fetch_array($getguesses)) {
echo "GIRLS:". $row['totalgirls'];
echo "BOYS:". $row['totalboys'];
//code to grab other info about guesses, not relevant
}
}
此輸出
NUMGUESSES: 1
GIRLS: 4
BOYS: 0
而且還吐出來只有一條線(僅適用於現有的四個猜測之一)
所有四種猜測是女生,所以GIRLS總數和BOYS總數都是正確的。但爲什麼現在只能將NUMGUESSES視爲1?它應該是4並且應該顯示4行猜測。
與COUNT()的東西扔東西了。有任何想法嗎?
謝謝,不幸的是,沒有工作,只輸出NUMGUESSES:1,GIRLS:4,BOYS:4並且只有一行再次 – user3304303
變量$ numguesses計數記錄集中的行數,它將始終爲1!並且,由於你正在執行COUNT,因此只有一行是預期的......其他行將包含什麼內容? – Webomatik
對不起,我不明白你爲什麼說它總是1.當你在查詢中使用COUNT時,結果總是1行,不管是什麼?那麼,我會被迫做兩個單獨的SQL查詢(1,獲取所有信息的行數和1的數量)?我真的認爲你可以在同一個查詢中完成它們,但我一定是錯的。 – user3304303