Как объединить две таблицы с разными идентификаторами? - PullRequest
0 голосов
/ 08 апреля 2019

Извините, что название вопроса немного сбивает с толку, но я просто не могу найти простой способ подвести итог вопроса.Давайте начнем с примера.

Есть продукт A, и мне нужно отслеживать две функции X и Y из A. X генерируется каждый день, а Y генерируется ежемесячно.Чтобы сэкономить память, я решил поместить X, Y в две таблицы, а именно в Таблицу X и Таблицу Y. Поэтому в Таблице X есть два столбца: дата и X;Таблица Y имеет два столбца: дату и Y. Однако даты в этих двух таблицах имеют разную частоту.Я хочу объединить две таблицы на X, но мне нужно заполнить пропущенное значение в Y наблюдением за последний месяц.

Таблица X:

date                 X
----------      -------------
2019-01-01           1
2019-01-02           2
2019-01-02           3    
   ...              ...
2019-02-01           32
2019-02-02           33

Таблица Y:

date                 Y
----------      -------------
2019-01-01           0
2019-02-01           1

Таблица, которую я хочу запросить:

date                 X              Y
----------      -------------   ----------
2019-01-01           1              0
2019-01-02           2              0
2019-01-02           3              0
   ...              ...            ...
2019-01-31           31             0
2019-02-01           32             1
2019-02-02           33             1

Таблица X:

Table X

Таблица Y:

Table Y

Таблица, которую я хочу запросить:

Table I want to query

Ответы [ 3 ]

1 голос
/ 08 апреля 2019

Примерно так:

SELECT x.date,
       x.x,
       y.y
FROM   x
JOIN   y
  ON   YEAR(x.date) = YEAR(y.date)
 AND   MONTH(x.date) = MONTH(y.date);
0 голосов
/ 08 апреля 2019

Правильное соединение и ORDER BY должны сделать это

SELECT x.date, x.X, y.Y
FROM X x
RIGHT JOIN Y y ON YEAR(x.date) = YEAR(y.date) AND MONTH(x.date) = MONTH(y.date)
ORDER BY x.date ASC
0 голосов
/ 08 апреля 2019
SELECT 
a.Column1, 
a.column2, 
b.column3
FROM tablename LEFT JOIN anothertable b
ON a.column1 = b.column2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...