我有2个表要合并在一起。第二张表很棘手,我会尽力在这里解释一下
下表有问题:
1)表1
2)表2
表格1
+---------+-----------+-------+-----------+------------+-----------------+
| Orderid | name | Sku | row_total | tax_amount | discount_amount |
+---------+-----------+-------+-----------+------------+-----------------+
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 |
+---------+-----------+-------+-----------+------------+-----------------+
表2
+----------+--------+------------+
| MOrderid | mowner | mrealorder |
+----------+--------+------------+
| 002 | 95 | 3333333 |
| 002 | 100 | 3333333 |
| 002 | 320 | 3333333 |
| 002 | 95 | 3333333 |
| 002 | 504 | 3333333 |
| 002 | 112 | 3333333 |
| 002 | 95 | 3333333 |
| 002 | 99 | 3333333 |
| 002 | 106 | 3333333 |
| 002 | 11 | 3333333 |
+----------+--------+------------+
这是我正在编写的查询,用于获取所需的输出,我试图显示想要的最终结果。
SELECT DISTINCT o.Orderid, o.name, o.Sku, o.row_total, o.tax_amount, o.discount_amount, m.mowner
FROM table1 o
JOIN table2 m ON ( o.Orderid = m.Morderid )
这是我运行它后得到的结果
+---------+-----------+-------+-----------+------------+-----------------+--------+
| Orderid | name | Sku | row_total | tax_amount | discount_amount | mowner |
+---------+-----------+-------+-----------+------------+-----------------+--------+
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 95 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 95 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 95 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 95 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 95 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 95 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 95 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 95 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 95 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 95 |
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 100 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 100 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 100 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 100 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 100 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 100 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 100 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 100 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 100 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 100 |
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 320 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 320 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 320 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 320 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 320 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 320 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 320 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 320 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 320 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 320 |
+---------+-----------+-------+-----------+------------+-----------------+--------+
我想要的输出
+---------+-----------+-------+-----------+------------+-----------------+--------+
| Orderid | name | Sku | row_total | tax_amount | discount_amount | mowner |
+---------+-----------+-------+-----------+------------+-----------------+--------+
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 320 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 95 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 95 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 100 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 106 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 504 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 112 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 95 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 99 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 11 |
+---------+-----------+-------+-----------+------------+-----------------+--------+
问题
这里的主要问题是
mowner
列。它会继续对每个项目重复一次,直到完成所有mowner
。有人可以调查一下,并尝试帮助我获得在此问题中显示的预期结果。 最佳答案
OK !,这花了一些时间,但是如果您仍然想要有两个表(您可以只向表1添加mowner和mrealorder行),则需要添加一行,在这种方式中,您可以执行两个查询并查看结果,您当前的查询是:
SELECT DISTINCT o.Orderid, o.name, o.Sku, o.row_total, o.tax_amount, o.discount_amount, m.mowner
FROM table1 o
JOIN table2 m ON ( o.Orderid = m.Morderid )
我对此做了一点改变
SELECT DISTINCT o.Orderid, o.name, o.Sku, o.row_total, o.tax_amount, o.discount_amount, m.mowner
FROM table1 o
JOIN table2 m ON ( o.Orderid = m.Morderid and o.name = m.Mname)
您可以在这个小提琴http://sqlfiddle.com/#!9/73bde/3中看到整个示例
由于所有者的结果与您“渴望”的结果不同,因此您需要解释如何获得该值,当您这样做时,我很乐意修改当前答案以添加该值。
问候..