Автоматическая вставка строк

#c# #sql

#c# #sql

Вопрос:

У меня есть 3 таблицы:

Таблица 1

CustomerID Name Sname Zipcode
1 test1 test1 xxx2
2 test2 test2 yyy2
3 test3 test3 xxx2

Таблица 2

StaffID Name sname
1 Jack Mack
2 Jhon Addison

Таблица 3

ID CustomerID StaffID
1 1 1
Я не уверен, что SQL может это сделать, поэтому в C # я хочу, чтобы если StaffID 2 отсутствует в таблице 3, и если персонал хочет посетить всех клиентов в почтовом индексе xx2, то, нажав на кнопку посещения, он должен быть вставлен для всего почтового индекса. Итак, если я выбираю почтовый индекс xxx2, тогда запрос должен сначала проверить, не посещаю ли я тот же почтовый индекс для определенного, если нет, то добавьте человека в таблицу 3, чтобы обновленная таблица 3 выглядела примерно так:

ID CustomerID StaffID
1 1 1
2 1 2
3 3 2
Как вы можете видеть, StaffID 2 хотел бы посетить почтовый индекс xxx2, в результате он получает 2 записи в таблицу 3, потому что есть два CustomerID с почтовым индексом, таким же, как xxx2.

Я провел некоторое онлайн-исследование, я бы сделал это IF EXISTS (SELECT , но он просто добавил одну запись. Также, я думаю, я буду ожидать 3 параметра от C # zipcode, CustomerID и StaffID

Комментарии:

1. Должна ли таблица 3 сохраняться или вам нужен запрос, который выдаст таблицу 3 в качестве результата, но она никогда не будет сохранена в базе данных? Также я думаю, что понимаю, чего вы хотите, но я не понимаю требования » если StaffID 2 отсутствует в таблице 3 «.

2. @ScottChamberlain Таблица 3 есть, поэтому она проверит почтовый индекс из table1 и вставит результаты в table3. В таблице 3 есть FK от StaffID (table3) до StaffID (таблица 2) и от Customer (table3) до CustomerID (table1), поэтому, если StaffID2 уже посещает CustomerID 2, тогда нет смысла иметь для него другую запись в таблице 3

Ответ №1:

Из вашего описания видно, что вам просто нужен простой оператор insert.

 INSERT INTO Table3 (CustomerID, StaffID)
select CustomerID, @StaffId from Table1
where Zipcode = @zipcode
    and NOT EXISTS(select StaffID from Table3 where StaffID = @staffId)
  

Комментарии:

1. требуется ли мне ВСТАВИТЬ В таблицу 3 (CustomerID, StaffID) значения (@CustomerID, @SaffID), потому что это будет предоставлено пользователем C #. И будет ли это автоматически добавлять идентификатор StaffID ко всему почтовому индексу?

2. Нет, вы используете это вместо этого вызова. ВСТАВКА В может либо использовать values и добавлять одну строку информации, либо вы можете связать ее с select инструкцией, как я сделал.

Ответ №2:

Попробуйте выполнить этот sql-запрос, предполагая, что вы передаете @StaffID, @CustomerID и @Zip в качестве параметров

 INSERT INTO Table3 (CustomerID, StaffID)
SELECT CustomerID, @StaffId FROM Table1
WHERE Zipcode = @zip
AND NOT EXISTS(SELECT StaffID FROM Table3 WHERE StaffID = @staffId 
AND CustomerID = @CustomerId)