Как объединить две таблицы в одном запросе?

0

Как получить таблицу C из таблицы A и таблицы B в одном заявлении на выбор? Благодарю.

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
    ты получил свой ответ здесь? @Джон Смит
Теги:

3 ответа

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

0

так как вам нужны все строки из таблицы A со всеми датами в таблицах B, вам нужно использовать FULL OUTER JOIN:

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

но поскольку в My sql нет полного внешнего соединения, вы можете эмулировать его, используя этот пост: Как сделать ПОЛНОЕ ВНЕШНЕЕ ОБЪЕДИНЕНИЕ в 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
  • 0
    Это решение не производит вывод, запрошенный OP.
-1

выберите ta.product, tb.Date, ta.Price from TableA ta, Таблица

Ещё вопросы

Сообщество Overcoder
Наверх
Меню