Мой SQL позорно ржавый. Я думал, что это дело для INTERSECT, но я хочу убедиться.SQL Intersect или Left Присоединиться к подзапросу? Таблица споров/исправлений
У меня есть две таблицы.
Таблица 1 содержит целую кучу строк, которые поступают из фида. Мы не контролируем их, и любые поправки к их значениям будут отменены, когда фид отправит новые данные. Некоторые данные неверны, поэтому Table2 действует как таблица Disputes или Corrections. Если поля Attribue1, Attribute2, Attribute3 определенной строки в таблице 1 неверны, строка создается в таблице 2 с «правильными» значениями для этих полей. Я могу связать две таблицы с помощью внешнего ключа (MatchKey1 на моем снимке).
В основном я хочу получить все строки из таблицы 1, но с исправлениями Таблицы 2, если они существуют, как будто это была вся одна таблица с «правильной» информацией для начала. Поскольку Table2 не удаляется, исправления будут сохраняться, когда таблица обновлений обновляет таблицу 1 до тех пор, пока между двумя таблицами может быть создана ссылка.
Пример:
Таблица 1
* Строка 1: {1, 00A1, желтый, рыбы, днем}
Строка 2: {2, 00A2, красный, корова, Sad } *
Таблица 2
Строка 1: {00A1, зеленый, Са т, Happy}
Запрос будет производить:
* {1, 00A1, зеленый, Cat, Happy}
{2, 00A2, красный, корова, Сад} *
Строка 2 в таблице 1 остается, как и значение «Happy» (Attribute3) в Row1, но значения Attribute1 и Attribute2 показывают «скорректированные» значения.
Если не INTERSECT, будет ли какая-то левая регистрация (возможно, с подзапросом) лучше?
Select * Table1 Left Регистрация Table2 на Table1.Matchkey1 = Table2.MatchKey1
Я хочу, чтобы исключить «неправильные» значения полей из столбцов одного и того же имени в Table1, хотя.
справка приветствуется.