Объединение данных из 2 таблиц, когда у них нет одинаковых ключей? - PullRequest
0 голосов
/ 15 марта 2019

Вот пример данных, о которых я говорю:

tbl1                                      tbl2
====================================     ====================================  
| id | id_name | purchased | count |     | id | date                | count |
====================================     ====================================
|  1 |  id1    | true      | 100   |     |  1 | 2019-03-01 00:00:00 | 50    |
|  2 |  id2    | false     | 40    |     |  1 | 2018-03-02 00:00:00 | 30    |
|  3 |  id3    | false     | 60    |     |  1 | 2018-03-03 00:00:00 | 25    |
|  4 |  id4    | false     | 100   |     ====================================
====================================

По сути, я пытаюсь получить сумму 'count' в таблице tbl1, но там, где 'куплен' = истина. Я хочу обновить этот счет с помощью суммы 'count' в таблице tbl2 после определенной даты: '2018-03 -02' .

Я пытался сделать комбинацию левых объединений и случаев когда, но из-за того, что tbl2 не имеет точно совпадающих значений 'id', мой запрос выводит только значения счетчиков для id = 1.

Любая помощь здесь? Заранее спасибо!

РЕДАКТИРОВАТЬ: извините, чтобы уточнить, что это MySQL, и я не пытаюсь обновить фактическую таблицу. Я просто хочу получить данные для tbl1 и обновить данные счетчика в этих выходных данных.

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Попробуйте и посмотрите, работает ли

Выберите (Выберите количество (id) из таблицы tl1, где приобретено = true) (Выберите количество (количество) из таблицы tbl2, где дата> = "2018-03-03") как "total_count" из таблицы tl1, tbl2;

0 голосов
/ 15 марта 2019

Вы можете попробовать ниже -

update t tbl2
join select id,sum(`count`) as totalcnt from tbl1 where purchased=true group by id)t1 
on t.id=t1.id 
set t.`count`=totalcnt
where date>'2018-03-02'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...