1 回答
TA贡献1797条经验 获得超6个赞
您当前的设计有冗余数据,您应该通过维护订单和订单项目的单独表来标准化您的数据库结构,您还可以添加客户表。
根据您当前的设计,您可以循环遍历所有行并有条件地显示每个订单号。只有一次。
select id,
order_number,
full_name,
address,
time_to_deliver,
quantity,
item_name,
notes
from orders
order by order_number asc
Hereorder by子句很重要,这样您将获得每个订单的有序项目列表。一旦获得查询的所有结果,您就可以循环遍历数据
$currentParent = false;
while ($orderItem = $result->fetch_assoc()) {
if ($currentParent != $orderItem['order_number']) {
// display common detail of each order here
echo '<h1>' . $orderItem['order_number'] .' '. $orderItem['full_name'] .' '. $orderItem['address']'</h1>';
$currentParent = $orderItem['order_number'];
}
echo '<p>' . $orderItem['quantity'] .' '. $orderItem['item_name'] . ' '. $orderItem['notes'] .'</p>'; // here list rest of the information of order iterms
...
}
生成的标记将类似于
<h1>#1234, Freda Smith, 3 High St</h1>
<p>1 X Loaf Bread, Wholemeal</p>
<p>2 X 500ml Milk, skimmed </p>
<h1>#1235, Freda Smith, 3 High St</h1>
<p>1 X Tea, Eng. Breakfast</p>
//....
虽然您可以直接在数据库级别使用聚合(请参阅 参考资料),但它具有字符限制的限制,可以调整该限制,但当您可以在应用程序层处理此类情况时,这不是一个好方法group_concat
。Query for post and tags in same query
- 1 回答
- 0 关注
- 101 浏览
添加回答
举报