$list = $pdo->query(
"SELECT s.icon FROM `stock` as s
JOIN `order` as o ON o.order_id = s.order_id "
);
while ($row = mysqli_fetch_array($list)) {
echo $row['icon'];
}
假設我的資料是在 stock ,
當 order「取消」時,我會把 stock 的資料刪除
並匯入到 stock_cancel 資料表去,
stock 和 stock_cancel 的欄位規則一樣
此時...
假設 stock 有 3筆,stock_cancel 有 1筆
但是我在同一個 $list query 中,我能否同時顯示 stock 的 icon 也能顯示那一筆被刪除(stock_cancel)的 icon 呢?在同一個 query?這是可以實現的嗎?
應該直接在 stock 做記號就好了,
譬如說 valid = 1 就是有效訂單,
valid = 0 是無效訂單,
SELECT的時候再篩選valid就可以了.
這樣是給自己找麻煩,
而且資料量大的話,
對效率應該也會有不小的影響.
嗯,我以為把數據表分開會比較好⋯因為我統計報表都是依照 stock 去計算,報表也有需要統計「已取消」的庫存,我就會去 stock_cancel 找
但是遺忘了假設同樣的query,有正常訂單跟取消訂單時無法共同顯示⋯⋯
使用union all
SELECT 'uncancel' status,s.icon FROM `stock` as s
JOIN `order` as o ON o.order_id = s.order_id
union all
SELECT 'cancel' status,s.icon FROM `stock_cancel` as s
JOIN `order` as o ON o.order_id = s.order_id
如果要加上條件篩選
SELECT 'uncancel' status,s.icon FROM `stock` as s
JOIN `order` as o ON o.order_id = s.order_id
where 你的邏輯
union all
SELECT 'cancel' status,s.icon FROM `stock_cancel` as s
JOIN `order` as o ON o.order_id = s.order_id
where 你的邏輯
你的說明有點搞不太清楚。沒辦法很有效的給你答案。也可能是因為你的節構上怪怪的。
order 裏當是訂單才對。stock 因該是商品。
不明白的是為何會出現stock_cancel這個東西出來。
正常來說。如果訂單取消的情況下。理當order會存在取消的筆數才對。
不明白為何還需要一個stock_cancel表來記錄取消?
所以很難給你一定的正確答案就是了。