你好,mysql上的group by正在工作,但是php查询上我没有工作。
如果我把groupby从php中删除,这是可行的,但是我没有得到正确的结果。
mysql数据库
SELECT _o.Ora,_u.Fname,_u.Sname,_u.Phone,_o.Name1,_o.Name2,_o.Name3,_o.Name4,_o.Name5,_o.Name6,_o.PaymentType,_o.FinalPrice
FROM _orders as _o,_users as _u WHERE _o.ShopName='ISAAK' AND _o.HmerominiaParagelias='13/12/2018' AND _o.UserID=_u.Username
GROUP BY _o.OraParagelias IN (SELECT MAX(OraParagelias) FROM _orders) ORDER BY _o.Ora DESC;
结果
php代码:
<?php
include_once 'connect.php';
$ShopName= $_POST['ShopName'];
$HmerominiaParagelias= $_POST['HmerominiaParagelias'];
$sql = "SELECT _o.Ora,_u.Fname,_u.Sname,_u.Phone,_o.Name1,_o.Name2,_o.Name3,_o.Name4,_o.Name5,_o.Name6,_o.PaymentType,_o.FinalPrice
FROM _orders as _o,_users as _u WHERE _o.ShopName='$ShopName' AND _o.HmerominiaParagelias='$HmerominiaParagelias' AND _o.UserID=_u.Username
GROUP BY _o.OraParagelias IN (SELECT MAX(OraParagelias) FROM _orders) ORDER BY _o.Ora DESC";
$result = $dbcon->query($sql);
if($result->num_rows> 0) {
while ($row = $result->fetch_assoc()){
echo "\nΏρα: ".$row["Ora"]."\nΌνομα: ".$row["Fname"]."\nΕπώνυμο: ".$row["Sname"]."\nΤηλ.: ".$row["Phone"]."\n".$row["Name1"]."\n".$row["Name2"]."\n".
$row["Name3"]."\n".$row["Name4"]."\n".$row["Name5"]."\n".$row["Name6"]."\nΤρόπος Πλήρ.: ".$row["PaymentType"]."\nΤελικό Ποσό: ".$row["FinalPrice"].
"€?";
}
} else{
echo "no_orders_found?";
}
?>
[![在此处输入图像描述]
结果:没有找到订单
关于如何在php上修复groupby有什么解决方案吗?
1条答案
按热度按时间okxuctiv1#
考虑使用显式
JOIN
在table之间。具体地说,在聚合查询上连接,将用户单元级数据连接到它们对应的最大值,以返回两个以上的用户。下面假设userid是用于连接的唯一值(根据需要进行调整)。查询运行差异的原因可能是phpdbiapi(mysqli、pdo等)不允许奇怪的(更新的?)
GROUP BY ... IN()
而mysql workbench显然是这样做的,可能是打开了特定的设置。rextester演示(使用示例数据)