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