Я использую VS2005 и SQL Server 2005.
Я пытаюсь выполнить несколько INSERT INTO
операторов SQL, которые соединяют таблицы 3 sql.
3 таблицы:
Table1
: UserID, Username
Table2
: UserID, Status
Table3
: UserID, Username, Issue
Ниже приведены проверки, которые мне нужно выполнить:
Пользователи, которые существуют в Table1
, должны существовать в Table2
Пользователи, которые существуют в Table1
, не должны иметь STATUS=DELETE
в Table2
Пользователи, у которых нет STATUS=DELETE
в Table2
, должны существовать в Table1
В настоящее время у меня есть только оператор SELECT
, который выполняет 3 вышеупомянутых запроса, без добавления в 3-ю таблицу:
SELECT *
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.userid = t2.userid
WHERE (t2.userid IS NULL AND t1.userid IS NOT NULL)
OR (t2.status = 'DELETE' AND t1.userid IS NOT NULL)
OR (t2.userid IS NOT NULL AND t2.status <> 'DELETE' AND t1.userid IS NULL)
Я хотел бы, чтобы для каждой проверки, указанной выше, INSERT
результаты в Table3
с уникальной переменной ISSUE
(например, для проверки № 1, ISSUE=User exist in t1 but not t2
)
В настоящее время я пытаюсь сформировать запрос, который соединяет 3 таблицы вместе, и для каждого результата, найденного первой проверкой, t2.userid IS NULL AND t1.userid IS NOT NULL
, он вставит новую строку в Table3
. Но у меня возникли некоторые проблемы с запросом SQL.
INSERT INTO Table3 (userid, username, issue)
VALUES (t1.userid, t1.username, 'user not found in t2')
FULL OUTER JOIN table2 t2 ON t1.userid = t2.userid
WHERE (t2.userid IS NULL AND t1.userid IS NOT NULL)
Большое спасибо за помощь.