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 關注
- 145 瀏覽
添加回答
舉報