我想在一个查询中检索所有的购买订单,并计算匹配的购买订单。匹配将是满足所有属性(大于或等于)并且比购买订单便宜的销售订单。这可能吗?
这是我的表结构:
属性
| 身份证|姓名|
| - ------|- ------|
| 1个|面积(平方米)|
| 第二章|会议室|
| ...|...|
卖出订单
| 身份证|标题|价格|...|
| - ------|- ------|- ------|- ------|
| 1个|1号公寓|50万欧元|...|
| 第二章|1号厂房|1百万欧元|...|
| ...|- -|- -|...|
卖单属性
| 销售订单标识|属性标识|价值|...|
| - ------|- ------|- ------|- ------|
| 1个|1个|九十|...|
| 1个|第二章|三个|...|
| 第二章|1个|二百三十九|...|
| 第二章|第二章|五个|...|
| ...|...|...|...|
购买订单
| 身份证|要约|...|
| - ------|- ------|- ------|
| 1个|600万欧元|...|
| 第二章|150万欧元|...|
采购订单属性
| 购买订单标识|属性标识|价值|...|
| - ------|- ------|- ------|- ------|
| 1个|1个|八十|...|
| 1个|第二章|第二章|...|
| 第二章|1个|二百|...|
| 第二章|第二章|三个|...|
| ...|...|...|...|
我尝试在MySQL Workbench中求解,但无法解出
2条答案
按热度按时间jv2fixgn1#
我假设卖单id和买单id是相关的,如果不是,那么在你的数据中sell和buy表之间就没有关系了。你可以尝试下面这样的方法来得到原始答案。首先cte为所有属性创建标记。其次CTE得到满足所有属性需要的所有sales id。然后final select获取采购订单符合销售属性需求且价格低于采购订单的情况。
u91tlkcl2#
因为你不把价格和报价存储为十进制或其他数字类型,所以你总是需要转换它,这将花费一些时间,而且不支持货币数据类型,所以你应该重新设计你的表。
剩下的就是许多带有正确ON子句的连接。
它会将价格与报价以及所有匹配的属性进行比较
| 身份证|标题|价格|身份证|要约|
| - ------|- ------|- ------|- ------|- ------|
| 1个|1号公寓|50万欧元|1个|600万欧元|
fiddle