我正在尝试进行一个查询,将 mix payment 表行与 soline 表行连接起来 与 soorder 表行连接。 mix payment 表是定制的,它与带有 ordernbr 和 ordertype 的 soorder 表相关 但它与 soline 表中的行无关。 所以当我使用这个查询加入他们时
select * from soorder o
inner join soline l on o.ordernbr = l.ordernbr and o.ordertype = l.ordertype
inner join MixPayments m on m.OrderNbr = o.OrderNbr and m.OrderType = o.OrderType
where o.ordernbr = '0001' and o.companyid = 2 and l.companyid = 2 and m.CompanyID = 2
SOOrder表是这样的
Select * from SOOrder where ordernbr = '0001'
订单号 | 订单类型 |
---|---|
0001 | TC |
SOLine表是这样的
Select * from SOLine where ordernbr = '0001'
订单号 | 订单类型 | 商品名称 | 商品价格 |
---|---|---|---|
0001 | TC | 项目1 | 50 |
0001 | TC | 项目2 | 100 |
0001 | TC | 第3项 | 150 |
0001 | TC | 项目4 | 250 |
MixPayments 表是这样的
Select * from MixPayments where ordernbr = '0001'
订单号 | 订单类型 | 付款方式 | 付款金额 |
---|---|---|---|
0001 | TC | 签证 | 350 |
0001 | TC | 现金 | 200 |
它有 8 行,但只有四行,并且具有此 ordernbr 和类型的混合支付行只有两行 混合支付的第一行获取了 soline 的 4 行,然后混合支付的第二行再次获取了 soline 表的 4 行
结果是
订单号 | 订单类型 | 商品名称 | 商品价格 | 付款方式 | 付款金额 |
---|---|---|---|---|---|
0001 | TC | 项目1 | 50 | 签证 | 350 |
0001 | TC | 项目2 | 100 | 签证 | 350 |
0001 | TC | 第3项 | 150 | 签证 | 350 |
0001 | TC | 项目4 | 250 | 签证 | 350 |
0001 | TC | 项目1 | 50 | 现金 | 200 |
0001 | TC | 项目2 | 100 | 现金 | 200 |
0001 | TC | 第3项 | 150 | 现金 | 200 |
0001 | TC | 项目4 | 250 | 现金 | 200 |
有没有办法获取不重复的数据? 因为当我尝试计算总价时,它给出了错误的总价。
我需要它像这样或任何其他不重复的方式就可以了
订单号 | 订单类型 | 商品名称 | 商品价格 | 付款方式 | 付款金额 |
---|---|---|---|---|---|
0001 | TC | 项目1 | 50 | 签证 | 350 |
0001 | TC | 项目2 | 100 | 现金 | 200 |
0001 | TC | 第3项 | 150 | 空 | 空 |
0001 | TC | 项目4 | 250 | 空 | 空 |
我尝试了分组,但它没有给我我需要的结果
您似乎想要一个显示订单中的商品的结果,并且您想要在其旁边显示另一个显示订单付款的结果。根据您的示例所需结果,您希望这些结果来自同一查询。
SQL 不是这样工作的。在 SQL 中,每个表和结果都显示相似事物的集合,在实体关系数据设计中称为“实体”。但你有两个不同的实体。"正� 75e1 ��您所说,付款与订单商品“无关”。
\n"使用 SQL 实现此类目的的最佳方法是运行两个单独的查询,如果必须并排显示结果,则使用报告程序来显示结果。
编写 SQL 将这些不同的实体并排放置在单个查询的结果集中是可能的,但非常困难。