Sql 我只想合并三个表中的一列,其余三个表中的列应该像往常一样显示

Sql 我只想合并三个表中的一列,其余三个表中的列应该像往常一样显示,sql,postgresql,Sql,Postgresql,我有三个带列的表 1. Amazon - Aapnik, Amazon 2. Jumbotail - Aapnik, Jumbotail 3. Udaan - Aapnik, Udaan 现在,我想连接或合并三个表中的Aapnik列,并像往常一样显示其余的列 **Amazon** **Jumbotail** **Udaan** **Price** Aapnik | Amazon Aapnik

我有三个带列的表

1. Amazon
   - Aapnik, Amazon
2. Jumbotail
   - Aapnik, Jumbotail
3. Udaan
   - Aapnik, Udaan
现在,我想连接或合并三个表中的Aapnik列,并像往常一样显示其余的列

**Amazon**             **Jumbotail**               **Udaan**          **Price**
Aapnik | Amazon        Aapnik | Jumbotail       Aapnik | Udaan    Aapnik | Price
-------+-------        -------+----------       -------+------    -------+------
   1   |   A              4   |   D                4   |   G         1   |  100
   2   |   B              2   |   E                6   |   H         2   |  500
   3   |   C              5   |   F                7   |   I         3   |  300
                                                                     4   |  200
                                                                     5   |  400
                                                                     6   |  250
                                                                     7   |  540
                                                                     8   |  760
                                                                     9   |  120
                                                                     10  |  230

**Amazonprice**       **Jumbotailprice**        **Udaanprice**
Aapnik | Amazon        Aapnik | Jumbotail       Aapnik | Udaan
-------+-------        -------+----------       -------+------
   A   |   140            D   |   220               G  |   230  
   B   |   580            E   |   520               H  |   101  
   C   |   320            F   |   490               I  |   333
   Q   |   270            P   |   562               W  |   456
这是我尝试的,它将三个表中的所有aapnik列组合在一起,但也将所有其他三列组合为一列

select aapnik, amazon from amazon union all
       select aapnik, jumbotail from jumbotail union all
        select aapnik, udaan from udaan;
这就是我想要的

Aapnik | Amazon | Jumbotail | Udaan | Price | Amazonprice | Jumbotailprice | Udaanprice
-------+--------+-----------+-------+-------+-------------+----------------+------------
    1  |    A   |           |       |  100  |     140     |                |
    2  |    B   |     E     |       |  500  |     580     |       520      |
    3  |    C   |           |       |  300  |     320     |                |
    4  |        |     D     |   G   |  200  |             |       220      |    230
    5  |        |     F     |       |  400  |             |       490      |
    6  |        |           |   H   |  250  |             |                |    101
    7  |        |           |   I   |  540  |             |                |    333
更新: 如何从价格表中获取此产品的价格?

您可以在下面尝试-

select p.Aapnik,a.Amazon, j.jumbotail, u.UdaanPrice from price p
left join Amazon a on p.Aapnik=a.Aapnik
left join jumbotail j on p.Aapnik=j.Aapnik
left join Udaan u on p.Aapnik=u.Aapnik

这回答了问题的原始版本

一种方法使用
union
获取所有
Aapnik
值,然后
左连接

select a.Aapnik, am.Amazon, jt.jumbotail, uu.uudon, p.price
from price p left join
     Amazon am
     on am.Aapnik = p.Aapnik left join
     jumbotail jt
     on jt.Aapnik = p.Aapnik left join
     Uudon uu
     on uu.Aapnik = p.Aapnik;

因为完全外部连接在mysql中不可用,所以您可以使用左连接和右连接以及联合

select aapnik, amazon from
 amazon a left join Jumbotail b
on a.Aapnik=b.Aapnik
union 
select Aapnik,Jumbotail
 amazon a right join Jumbotail b
on a.Aapnik=b.Aapnik
union 
select Aapnik,Jumbotail
 Jumbotail  a left join Udaan  b
on a.Aapnik=b.Aapnik
union 
select Aapnik,Udaan
 Jumbotail  a right join Udaan  b
on a.Aapnik=b.Aapnik

对于问题的最后更新,您只需将价格表与其他表进行内部联接即可-

select a.Aapnik, am.Amazon, jt.jumbotail, ud.Udaan, p.Price
      ,ap.Amazon, jp.jumbotail, up.Udaan
from (select Aapnik from Amazon
      union
      select Aapnik from jumbotail
      union
      select Aapnik from Udaan ) a
join price p on a.Aapnik = p.Aapnik
left join Amazon am on am.Aapnik = a.Aapnik
left join Amazonprice ap on am.Amazon = ap.Aapnik
left join jumbotail jt on jt.Aapnik = a.Aapnik
left join Jumbotailprice jp on jt.jumbotail = jp.Aapnik
left join Udaan ud on ud.Aapnik = a.Aapnik
left join Udaanprice up on ud.Udaan=up.Aapnik

我删除了不一致的数据库标记。请标记您正在使用的数据库。我正在使用PostgreSql。您似乎很难满足。错误:列引用“aapnik\u parent\u sku”的位置不明确:8我添加了新约束,请查看并帮助我解决它…我添加了新约束,请查看并帮助我解决它…我添加了新约束,请看一看并帮助我解决它…我添加了新的约束,请看一看并帮助我解决它。。。