如何在一个查询中连接两个表?

时间:2018-02-21 17:59:40

标签: mysql sql

如何在一个select语句中从表A和表B中获取表C?感谢。

Table A -
Product, Date, Price 
P1, 2018-01-01, 10
P2, 2018-01-02, 20

Table B - 
Date
2018-01-01
2018-01-02
2018-01-03
2018-01-04

Table C
Product, Date, Price
P1, 2018-01-01, 10 
P1, 2018-01-02, null
P1, 2018-01-03, null
P1, 2018-01-04, null
P2, 2018-01-01, null
P2, 2018-01-02, 20 
P2, 2018-01-03, null
P2, 2018-01-04, null

3 个答案:

答案 0 :(得分:2)

CROSS JOIN将在表格之间创建完整的交叉产品。然后,您可以在日期匹配时填写Price列。

SELECT
  Product,
  TableB.Date,
  IF(TableA.Date = TableB.Date, Price, NULL END) AS Price
FROM TableA
CROSS JOIN TableB
ORDER BY Product, Date

DEMO

答案 1 :(得分:0)

因为您需要表A中的所有行以及表B中的所有日期,所以您需要使用FULL OUTER JOIN:

SELECT * FROM Table_A a
FULL OUTER JOIN Table_B b
ON a.date = b.date 

但是,因为,我的sql中没有完全外部联接,您可以使用此帖子来模拟它:How to do a FULL OUTER JOIN in MySQL? 在MYSQL中:

SELECT * 
FROM Table_A a
LEFT JOIN Table_B b ON a.date=B.date
UNION ALL
SELECT * 
FROM Table_A a 
RIGHT JOIN table_B b
ON a.date=b.date

答案 2 :(得分:-1)

选择ta.product,tb.Date,ta.Price 来自TableA ta,表