如何在一个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
答案 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
答案 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,表