首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能把我的桌子修好使药品过期呢?

我怎样才能把我的桌子修好使药品过期呢?
EN

Stack Overflow用户
提问于 2019-09-08 08:35:45
回答 1查看 59关注 0票数 0

我在做药店的盘存系统。现在我正试着把药过期。我想给你看我的桌子。也许你知道怎么修理我的桌子。我把到期日写在tbl_received_order里。当我收到一种药,它将插入tbl_medicine。如果顾客购买50片扑热息痛或supplier_med_id等于3,两个月后收到的药物就过期了。我用DATE(NOW()) > tbl_received_order.expiration_date得到所有过期的药。我的问题是,当药物过期时,qty不符合rec_qty的要求。举个例子,我有100台个人电脑。在我的初步清单上。但后来,有50台电脑。被卖掉了。为什么100 pcs.is仍然在思考我的过期药品清单,而不是50 for。我怎么收拾我的桌子?有人能帮我解决我的问题吗?

这是我的桌子

代码语言:javascript
复制
tbl_medicine

med_id  supplier_med_id  qty    status   branch_id
1       3                50     Active   1
2       7                100    Active   1
3       9                100    Active   1
代码语言:javascript
复制
tbl_received_order

received_id  user_id  purchase_order_id   date_received 
RO20190001   1        PO20190001          2019-05-04
代码语言:javascript
复制
tbl_received_order_details

id    received_id    supplier_med_id   rec_qty   expiration_date
1     RO20190001     3                 100       2019-11-04
2     RO20190001     7                 100       2019-11-04
3     RO20190001     9                 100       2019-11-04
1     RO20190002     3                 50        2019-11-04
2     RO20190002     7                 50        2019-11-04
3     RO20190002     9                 50        2019-11-04
代码语言:javascript
复制
tbl_transaction

transaction_id  customer_id  user_id  transaction_date  branch_id
0001            CU2018001    1        2019-09-04        1
0002            CU2018001    1        2019-09-04        1
0003            CU2018001    1        2019-09-04        1
代码语言:javascript
复制
tbl_transaction_details

details_id   transaction_id  supplier_med_id   qty    price    total_price
1            0001            3                 50     10.00    500
2            0002            3                 10     10.00    100
3            0003            3                 10     10.00    100
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-08 08:44:00

您可以使用JOIN获得精确的数量。

代码语言:javascript
复制
SELECT orderd.expiration_date, orderd.rec_qty - SUM(trans.qty) AS inventory_left
FROM tbl_received_order_details AS orderd
JOIN tbl_transaction_details AS trans
ON orderd.supplier_med_id = trans.supplier_med_id
WHERE orderd.supplier_med_id = 3
AND orderd.expiration_date < '2019-11-05'

使用tbl_received_order_detailstbl_transaction_details加入supplier_med_id

用药物id '3‘和过期日期过滤记录。

由于一种特定的药物可以有超过一个交易,我们需要SUM销售的数量并从总量中减去它才能得到剩下的东西。

更新1

上述查询将得到过期的药品出售。若要获取所有库存的剩余数量,请使用GROUP BY

代码语言:javascript
复制
SELECT orderd.expiration_date, orderd.rec_qty - SUM(trans.qty) AS inventory_left
FROM tbl_received_order_details AS orderd
JOIN tbl_transaction_details AS trans
ON orderd.supplier_med_id = trans.supplier_med_id
WHERE orderd.expiration_date < '2019-11-05'
GROUP BY orderd.supplier_med_id

更新2

若要获取所有过期库存,无论是否已售出,请使用LEFT JOINCOALESCE(trans.qty, 0)将返回第一个NOT NULL值。因此,如果一种药物从未出售,它将在transaction表中没有任何条目,它将返回qty为NULL。在这种情况下,我们将减去零从rec_qty,这反过来将得到完整的rec_qty作为左转。

代码语言:javascript
复制
SELECT orderd.expiration_date, orderd.rec_qty - SUM(COALESCE(trans.qty, 0)) AS inventory_left
FROM tbl_received_order_details AS orderd
LEFT JOIN tbl_transaction_details AS trans
ON orderd.supplier_med_id = trans.supplier_med_id
WHERE orderd.expiration_date < '2019-11-05'
GROUP BY orderd.supplier_med_id
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57840348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档