找出该订单,但不包含某些商品!只要有不符合的订单就不显示?
假设数据表关系:
order 订单数据表:
order_id / public_order_id
1 / AAA
2 / BBB
3 / CCC
prod 商品数据表:
order_id / prod_id
1 / 100
1 / 101
1 / 102
2 / 101
2 / 103
3 / 102
3 / 104
前端显示
AAA
BBB
CCC
当我要排除有某 prod_id 的订单不显示
假设我要排除假设该订单有 prod_id 100 得不显示
前端就会排除 AAA 剩下:
BBB
CCC
若追加 prod_id 101
则会只剩下 CCC (因为 AAA 跟 BBB 都有包含 100, 101)
CCC
这我能怎么做判断?
SELECT
r.public_order_id,
FROM `order` as r
JOIN `prod` as p ON p.order_id = r.order_id
WHERE p.prod_id != 100
AND p.prod_id != 101
// GROUP BY r.public_order_id
我发现如果不 GROUP BY public_order_id 的话,
假设该订单 prod_id 有多少,就会重复多少个 public_order_id
但是我如果 GROUP BY public_order_id ,
他就会把全部 AAA,BBB,CCC 都印出,但其实每个订单 prod_id 是多个,而且都有包含我不要的 100, 101
...所以这样会出问题!
我想实现的是
当该订单中有一笔有我不要的 prod_id 则那笔就不显示
现在的情况是虽然该笔有我不要的 prod_id ,但还有其他不是这个 prod_id 的商品,所以他就又显示出来
補充
數據庫結構:
SQL語句
SELECT
r.status,
uo.add_time,
r.public_order_id,
uo.order_id,
u.name as uname,
ss.prod_id
FROM `user_order` as uo
JOIN `order_record` as r ON r.order_id = uo.order_id
JOIN `user` as u ON u.id = r.id
JOIN `stock` as ss ON ss.order_id = r.order_id
AND (ss.prod_id = 115
or ss.prod_id = 120)
WHERE r.status = '待處理'
AND ss.prod_id is null
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
试一下
你可以先看看join后的结果,就知道问题所在了
不过可以这样查
select public_order_id from order_d
这个试下