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我添加了新约束,请查看并帮助我解决它…我添加了新约束,请查看并帮助我解决它…我添加了新约束,请看一看并帮助我解决它…我添加了新的约束,请看一看并帮助我解决它。。。