SQL-скрипт для заполнения таблицы
Здравствуйте,
У меня есть следующий вызов:
- две таблицы: таблица1 и таблица2
- table1 имеет справочный столбец (например, 'referencecolumn') для table2. Каждая запись в таблице1 должна указывать на одну запись в таблице2. Многие записи в таблице1 могут указывать на одну и ту же запись в таблице2
К сожалению, в table1 есть много кодов данных, которые имеют «неправильные» значения для table1.referencecolumn. Значения NULL или 0, и мне нужно заполнить их правильными значениями.
К счастью, они являются многими другими столбцами указателей с «избыточностью» в таблицах от table1 до table2. Но они дают только вместе приемлемую ссылку на запись таблицы 2.
Например, записи об экзаменах студентов (таблица1) могут указывать только на одно правило экзамена (таблица2) через столбец table1.examregulation
Так что я думаю, что должен сделать следующее (SQL или Python), но я очень плохо знаком с SQL и Python:
FOREACH table1record where table1.referencecolumn is NULL or 0
IF
((table1.column1 == table2.column1) AND (table1.column2 == table2.column2) AND
AND (table1.column3 == table2.column3) )
THEN SET table1.referencecolumn = table2.referencedcolumn
ENDIF
END FOREACH
@ a_horse_with_no_name: спасибо!
'Мне неясно, хотите ли вы постоянно обновлять данные или просто изменить результат' - я хочу обновить / заполнить данные в таблице 1 один раз.
table1
+------+------+------+-----------------+
| col1 | col2 | col3 | referencecolumn |
+------+------+------+-----------------+
| ABB | 2000 | 52 | NULL |
| AKB | 2001 | 61 | 0 |
| INB | 1998 | 77 | 0 |
| ENM | 2010 | 56 | NULL |
+------+------+------+-----------------+
table2
+------+------+------+------------------+
| col1 | col2 | col3 | referencedcolumn |
+------+------+------+------------------+
| ABB | 2000 | 52 | 254 |
| AKB | 2001 | 61 | 587 |
| INB | 1998 | 77 | 665 |
| ENM | 2010 | 56 | 322 |
+------+------+------+------------------+
RESULT after SQL UPDATE or run script: table1 looks like this:
+------+------+------+-----------------+
| col1 | col2 | col3 | referencecolumn |
+------+------+------+-----------------+
| ABB | 2000 | 52 | 254 |
| AKB | 2001 | 61 | 587 |
| INB | 1998 | 77 | 665 |
| ENM | 2010 | 56 | 322 |
+------+------+------+-----------------+