У меня есть две таблицы для объединения с двумя столбцами, например person_id
, component
. Для одного человека может быть несколько компонентов, но компоненты могут быть одинаковыми для другого человека.
Проблема в том, что в одной из таблиц есть все правильные данные, а во второй - некоторые пропущенные значения во втором столбце.
Две таблицы выглядят примерно так:
Первый стол:
+----------+-----------+
| person_id| component|
+----------+-----------+
| sth | A | <--
| sth | B | <-- two components for sth
| sth1 | A | <-- A component for sth1
| sth2 | A |
| sth3 | B | <-- B component for sth3
+----------+-----------+
Обратите внимание, что есть только один компонент для sth1 и 3
Второй стол:
+----------+-----------+-------+
| person_id| component| value |
+----------+-----------+-------+
| sth | A | 1 |
| sth | B | 21 |
| sth1 | null | 313 |<--should be matched with A component from sth1
| sth2 | A | 2 |
| sth3 | null | 12 |<--should be matched with B component from sth3
+----------+-----------+-------+
Обратите внимание, что эти нулевые значения могут быть сопоставлены только с одной строкой таблицы A.
Так что мне нужны значения из второй таблицы, но мне также нужна первая, чтобы сопоставить нулевые компоненты с реальными компонентами. Как видите, отсутствующий компонент не всегда одинаков.
Если во второй таблице отсутствует компонент для person_id sth1
, то в первой таблице будет только ОДИН компонент для этого идентификатора.
поэтому не нужно выбирать как-то просто, просто сказать, что в таблице B отсутствует значение в компоненте, тогда это должно быть сопоставлено с идентификатором персоны таблицы A.
И, конечно, я не могу просто сопоставить идентификаторы лиц, потому что он не будет знать, какое значение соответствует какому компоненту.