我有以下 SELECT 语句,它应该返回记录集 ORDERED BY Last Name,但事实并非如此。我检查了姓氏字段中是否有任何空白字符/空格,但没有,因为它们都已使用 $last_name = trim(filter_input(INPUT_POST, 'LastName', FILTER_SANITIZE_STRING)); 进行了修剪。
$query_PaidOrders = "SELECT * FROM `orders` WHERE `payment_received` = '1'";
$rs_PaidOrders=$conn->query($query_PaidOrders);
if($rs_PaidOrders === false){
trigger_error('SQL error:'.$query_PaidOrders.' Error: '.$conn->error, E_USER_ERROR);
}
else{
while ($row_PaidOrders=$rs_PaidOrders->fetch_assoc()) {
$PaidOrderId=$row_PaidOrders['order_id'];
$query_select_events = "SELECT customers.last_name AS LASTNAME,
customers.first_name AS FIRSTNAME,
order_details.member_id AS MEMBERID,
order_details.event_type AS EVENTTYPE,
order_details.event_distance AS EVENTDISTANCE,
order_details.keep_stats AS KEEPSTATS
FROM `order_details`
LEFT OUTER JOIN customers ON order_details.member_id = customers.customer_id
WHERE order_details.event_id = '$eid' AND order_details.counted_for_discount='1' AND order_details.ORDERNUM = '$PaidOrderId' ORDER BY LASTNAME ASC";
$rs_events=$conn->query($query_select_events);
if($rs_events === false){
trigger_error('SQL error:'.$query_select_events.' Error: '.$conn->error, E_USER_ERROR);
}
else{
while($row_order_details=$rs_events->fetch_assoc()){
$NAME = $row_order_details['LASTNAME'].", ".$row_order_details['FIRSTNAME'];
$member_id=$row_order_details['MEMBERID'];
$event_type=$row_order_details['EVENTTYPE'];
$event_distance=$row_order_details['EVENTDISTANCE'];
$keep_stats=$row_order_details['KEEPSTATS'];
?>
<tr>
<td><?php echo "$NAME";?></td>
etc...
我的结果是: B...、H...、H...、S...、B...、R...
我真的被这个问题难住了。任何帮助将不胜感激。
最佳答案
问题是我没有将所有内容合并到 1 个查询中。一旦我这样做了,ORDER BY 姓氏就可以正常工作了。
关于mysql - 带有 ORDER BY '$x' 的 LEFT OUTER JOIN 未正确排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49823445/