我有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中看到整个示例

由于所有者的结果与您“渴望”的结果不同,因此您需要解释如何获得该值,当您这样做时,我很乐意修改当前答案以添加该值。

问候..

10-08 09:13