Snowflake SQL для обновления нулевых значений в столбце значениями из той же таблицы, но путем ссылки на косвенно связанMySql

Форум по Mysql
Ответить
Anonymous
 Snowflake SQL для обновления нулевых значений в столбце значениями из той же таблицы, но путем ссылки на косвенно связан

Сообщение Anonymous »

Мне нужно написать Snowflake SQL для обновления нулевого значения (cid) в транзакции таблицы из значений cid в той же таблице, но путем ссылки на косвенно связанное совпадающее значение (хеш) в платеже другой таблицы.
/>Для общего представления обратитесь к прилагаемому образцу данных и ожидаемому результату. Также теперь добавлены запросы на вставку. Я попытался объяснить приведенные ниже данные:
  • Предположим, у меня в снежинке есть две таблицы — транзакция и оплата.
  • таблице транзакций есть столбцы: tid, cid, доход1, доход2.

    tid — это первичный ключ. cid может иметь значение null.
[*]таблица платежей имеет столбцы – id, tid, hash, sum.
  • id – это первичный ключ.
  • tid всегда не равен нулю, но и не уникален.
  • хэш может быть нулевым.

Правила:
  • не все суммы транзакции присутствуют в платеже.
  • для некоторого tid в таблице транзакций может быть хэш в таблице платежей.
  • другой tid может присутствовать в таблице платежей, но с нулевым хешем .
Пример:
Пожалуйста, обратитесь к прилагаемому образцу данных и ожидаемому результату.
допустим, в транзакции есть tid 123 с нулевым cid, но в таблице платежей имеется соответствующий хэш.
то же самое значение хеш-функции в таблице платежей также сопоставляется с транзакцией tid 770. Теперь этот tid 770 обратно в таблицу транзакций имеет свой cid, заполненный как cid_2.
мы хотим использовать эту ситуацию, чтобы значение cid cid_2 для tid 770 копируется в значение cid tid 123 в таблице транзакций из-за их общего хеша в таблице платежей.
Вопрос:
Мне нужно написать запрос снежинки для этого, чтобы заполнить все такие нулевые идентификаторы в таблице транзакций, где это возможно.
некоторые идентификаторы могут оставаться пустыми в таблице транзакций, если соответствующий хэш не найден в таблице платежей для соответствующего tid
Пример данные:
Транзакция:



TID
CID
доход1
доход2




123
null
1313121
1309075


456
null
1312312
1309076


789
null
1311503
1309077


312
null
1310694
1309078


345
null
1309885
1309079


678
null
1309076
1309080


679
null
1309077
1309081


770
cid_2
309885
1309079


880
cid_1
1309076
1309080


234
null
1309885
1309079



Оплата:



ID
TID
хеш
Доход




23423
123
3333
56


34534
456
1111
65


23423
789
2222< /td>
67


32432
880
1111
87


54754
770
3333
45


98797
312
null< /td>
65


14284
234
3333
54



Ожидаемый результат для окончательной таблицы транзакций: (жирным шрифтом значения являются новыми и достигаются с помощью ссылки на хэш платежа.



TID
CID
доход1
revenue2




123
cid_2

1313121
1309075


456
cid_1
1312312
1309076


789
null
1311503
1309077


312
null
1310694
1309078


345
null
1309885
1309079


678
null
1309076
1309080


679
null
1309077
1309081


770
cid_2
1309885
1309079


880
cid_1
1309076
1309080


234
cid_2
1309885
1309079



Вставьте запросы для транзакций и платежей:
CREATE TABLE transaction (
TID INT PRIMARY KEY,
CID VARCHAR(255), -- Assuming CID is a string, adjust type as needed
revenue1 INT,
revenue2 INT
);

INSERT INTO transaction (TID, CID, revenue1, revenue2)
VALUES
(123, NULL, 1313121, 1309075),
(456, NULL, 1312312, 1309076),
(789, NULL, 1311503, 1309077),
(312, NULL, 1310694, 1309078),
(345, NULL, 1309885, 1309079),
(678, NULL, 1309076, 1309080),
(679, NULL, 1309077, 1309081),
(770, 'cid_2', 1309885, 1309079),
(880, 'cid_1', 1309076, 1309080),
(234, NULL, 1309885, 1309079);

------------------------------------------------------------------------------------------
CREATE TABLE payment (
TPMID INT,
TID INT,
cardhash INT,
Revenue INT,
PRIMARY KEY (TPMID, TID) -- Assuming the combination of TPMID and TID is unique
);

INSERT INTO payment (TPMID, TID, cardhash, Revenue)
VALUES
(23423, 123, 3333, 56),
(34534, 456, 1111, 65),
(23423, 789, 2222, 67),
(32432, 880, 1111, 87),
(54754, 770, 3333, 45),
(98797, 312, NULL, 65),
(14284, 234, 3333, 54);


Подробнее здесь: https://stackoverflow.com/questions/793 ... -table-but
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»