這裡我們模拟一個商城的基本的表結。此結構由(使用者、門店、導購、門店商品、訂單、訂單對應的商品)。其中,導購也是一個使用者,門店是隻屬于一個店主的,同時店主本身也是一個導購也是一個普通使用者。
結構圖:
場景1:購買者下訂單。
1、從session中獲得客戶ID。
2、可以通過時間戳等拼湊一個訂單ID(在建立表的時候為了友善我用自增的,在以下我們一直就吧訂單ID看成不是自增的,是用程式生成的)。
3、從商品的店鋪能獲得到導購ID(擷取規則我們這邊認為是随機)。
4、可以從商品中計算出訂單價格。
最終就能拼湊出下單的INSERT SQL語句(這邊我就不真正寫插入語句了)
<code>SET</code> <code>autocommit=0;</code>
<code>START </code><code>TRANSACTION</code><code>;</code>
<code>-- 建立訂單語句</code>
<code>INSERT</code> <code>INTO</code> <code>orders </code><code>VALUES</code><code>(訂單ID, 導購ID, 購買使用者ID, 訂單價格, 訂單狀态);</code>
<code>-- 建立商品訂單語句</code>
<code>INSERT</code> <code>INTO</code> <code>order_goods </code><code>VALUES</code><code>(</code><code>NULL</code><code>, 訂單ID, 商品ID, 商品價格, 商品數量);</code>
<code>-- 可以給添加多個商品到訂單中</code>
<code>......</code>
<code>COMMIT</code><code>;</code>
<code>set</code> <code>autocommit=1;</code>
以上就是一個客戶下單時要操作的,訂單ID(訂單号)是程式生成的,訂單ID(訂單号)是程式生成的,重要的事要說三遍。
情況2:購買者浏覽訂單
當使用者檢視訂單清單的時候可以通過分頁一次性獲得自己的訂單清單。
<code>-- 每一頁10行(這邊順便展示一下單資料量大時優化後的sql語句)</code>
<code>-- 查找使用者ID為100的訂單</code>
<code>SELECT</code> <code>l_o.orders_id,</code>
<code> </code><code>o.user_guide_id,</code>
<code> </code><code>o.user_id,</code>
<code> </code><code>o.price,</code>
<code> </code><code>og.price</code>
<code>FROM</code> <code>(</code>
<code> </code><code>SELECT</code> <code>orders_id</code>
<code> </code><code>FROM</code> <code>orders</code>
<code> </code><code>WHERE</code> <code>user_id = 100</code>
<code> </code><code>LIMIT 0, 10</code>
<code>) </code><code>AS</code> <code>l_o</code>
<code> </code><code>LEFT</code> <code>JOIN</code> <code>orders </code><code>AS</code> <code>o </code><code>ON</code> <code>l_o.orders_id = o.orders_id</code>
<code> </code><code>LEFT</code> <code>JOIN</code> <code>order_goods </code><code>AS</code> <code>og </code><code>ON</code> <code>l_o.orders_id = og.orders_id;</code>
情況3:導購檢視訂單
<code>-- 每個導購也可以檢視他銷售了多少的訂單</code>
<code>-- 查找導購ID為1的銷售情況</code>
<code>SELECT</code> <code>o.orders_id,</code>
<code>FROM</code> <code>orders </code><code>AS</code> <code>o</code>
<code> </code><code>LEFT</code> <code>JOIN</code> <code>order_goods </code><code>AS</code> <code>og </code><code>ON</code> <code>o.orders_id = og.orders_id</code>
<code>WHERE</code> <code>o.orders_id </code><code>IN</code><code>(</code>
<code> </code><code>FROM</code> <code>(</code>
<code> </code><code>SELECT</code> <code>orders_id</code>
<code> </code><code>FROM</code> <code>orders</code>
<code> </code><code>WHERE</code> <code>user_guide_id=1</code>
<code> </code><code>LIMIT 0, 10</code>
<code> </code><code>) </code><code>AS</code> <code>tmp</code>
<code>);</code>
情況4:導購修改訂單
<code>-- 這邊我們修改訂單金額就好,修改ID為1000的訂單</code>
<code>UPDATE</code> <code>orders </code><code>SET</code> <code>price = </code><code>'10000'</code> <code>WHERE</code> <code>orders_id=1000;</code>
情況5:店主為店鋪添加商品
1、我們可以根據操作的使用者獲得店鋪名
<code>-- 添加商品僞SQL</code>
<code>INSERT</code> <code>INTO</code> <code>goods </code><code>VALUES</code><code>(</code><code>NULL</code><code>, 商品名, 商品價格, 店鋪名);</code>
<code></code>
本文轉自027ryan 51CTO部落格,原文連結:http://blog.51cto.com/ucode/1746005,如需轉載請自行聯系原作者