postgresql - 带有逻辑运算符“AND”“OR”“NOT”的 PSQL Where 子句
问题描述
这是我在购物篮分析查询中的问题,客户可以选择他的购物篮并调用这样的搜索查询
select ti.* from transaction t join transaction_items ti on ti.unique_id = t.unique_id where ti.display_description 'ROMA TOMATO' AND 'BANANA' AND ('JALAPENO' OR 'ONION WHITE' AND ('SALSA' OR 'GUACAMOLE')),
'VITAMINS' AND 'PRODUCE' OR ('POTATO' AND 'SHRIMP') AND NOT ('MEAT' OR 'FISH' OR 'PIE')
在上面的查询中,搜索了两个不同的购物篮。通过“,”我们可以将篮子分开。因此,我们必须按篮子提供数据组。'ROMA TOMATO' AND 'BANANA' AND ('JALAPENO' OR 'ONION WHITE' AND ('SALSA' OR 'GUACAMOLE'))
篮子一和篮子二的销售额'VITAMINS' AND 'PRODUCE' OR ('POTATO' AND 'SHRIMP') AND NOT 'MEAT' OR 'FISH' OR 'PIE'
transaction_item 表的样本数据
amt qty display_description unique_id
2.470 1 ROMA TOMATO "2704-7075-12-201111"
2.470 1 BANANA "2704-7075-12-201111"
2.190 1 JALAPENO "2704-7075-12-201111"
2.190 1 ONION "2704-7075-12-201111"
2.190 1 SALSA "2704-7075-12-201111"
0.880 1 GUACAMOLE "2704-7075-12-201111"
2.860 4840 VITAMINS "2704-7075-12-201111"
1.580 2 PRODUCE "2704-7075-12-201111"
3.560 1550 POTATO "2704-7075-12-201111"
0.990 1 SHRIMP "2704-7075-12-201111"
0.340 1 MEAT "2704-7075-12-201111"
0.340 1 MEAT "2704-7075-12-201111"
0.330 1 FISH "2704-7075-12-201111"
0.330 1 FISH "2704-7075-12-201111"
0.330 1 PIE "2704-7075-12-201111"
0.330 1 ABC "2704-7075-12-201111"
0.330 1 ABC "2704-7075-12-201111"
0.330 1 ABC "2704-7075-12-201111"
0.330 1 XYZ "2704-7075-12-201111"
0.990 1 XYZ "2704-7075-12-201111"
0.500 1 XYZ "2704-7075-12-201111"
0.500 1 XYZ "2704-7075-12-201111"
2.470 1 ROMA TOMATO "2704-7075-12-201112"
2.470 1 BANANA "2704-7075-12-201112"
2.190 1 JALAPENO "2704-7075-12-201112"
2.190 1 ONION "2704-7075-12-201112"
2.190 1 SALSA "2704-7075-12-201112"
0.880 1 GUACAMOLE "2704-7075-12-201112"
2.860 4840 VITAMINS "2704-7075-12-201112"
1.580 2 PRODUCE "2704-7075-12-201112"
3.560 1550 POTATO "2704-7075-12-201112"
0.990 1 SHRIMP "2704-7075-12-201112"
0.330 1 ABC "2704-7075-12-201112"
0.330 1 ABC "2704-7075-12-201112"
0.330 1 ABC "2704-7075-12-201112"
0.330 1 XYZ "2704-7075-12-201112"
0.990 1 XYZ "2704-7075-12-201112"
0.500 1 XYZ "2704-7075-12-201112"
0.500 1 XYZ "2704-7075-12-201112"
解决方案
推荐阅读
- python - 为什么最后没有显示?一旦我调用主函数?需要如何改进代码以使其最后不显示?
- python - 二叉搜索树的删除函数不返回
- r - 根据 R 中另一列中的特定值过滤一大块行
- c++ - 使用 gRPC C++ 客户端异步 API 与线程同步 API 有什么好处
- button - 注册是否按下按钮
- css - 使用 webpack 生成的标识符定位 React 中的样式化组件?
- office365 - 如何学习 OFFICE 365 插件 (Office.js)
- azure - 如何使用 Terraform 完全部署容器化 Azure Function App
- erlang - 如果远程节点上没有注册处理,分布式消息发送结果如何回复?
- webpack - 从 Webpack 3 升级后的 Webpack 4 包大小