Vincent Warte Ответов: 1

Использование инструкции INSERT into для нескольких таблиц с левым соединением?


Здравствуйте друзья,

Я новичок в SQL, и мне нужно изменить несколько вещей в нашей базе данных customer-repair-database.

Вот что у меня есть:

Существует таблица ремонта, и она имеет столбец состояния, где "1" означает, что ремонт не выполнен, а "2" означает, что ремонт выполнен.
Существует также таблица элементов со столбцом ITEMSTATUS, где "1" также означает сделано, а "2" означает не сделано.

К сожалению, были некоторые ошибки, допущенные emplyees, и теперь есть пункты в ПУНКТ стол с ITEMSTATUS " 1" даже жесткий ITEMSTATUS должно быть установлено значение "2" потому что ремонт принадлежности уже установлен на "2" (сделанный).

Что я уже пробовал:

Вот sql-запрос, который я написал, чтобы показать мне все элементы, где статус должен быть установлен на "2":

SELECT REPAIR.REPAIRID,
REPAIR.STATUS,
ITEM.REPAIRID,
ITEM.ITEMID,
ITEM.ITEMSTATUS
FROM REPAIR
LEFT JOIN ITEM ON REPAIR.REPAIRID = ITEM.REPAIRID
WHERE REPAIR.STATUS = '2' AND ITEM.ITEMSTATUS = '1'


Этот sql-запрос показывает мне все элементы, где мне нужно установить ITEMSTATUS на "2". Поскольку там показано более 2000 элементов, я бы не хотел делать это вручную :).
Теперь я не знаю, как использовать оператор INSERT INTO с описанным запросом, и надеюсь, что кто-то сможет мне помочь.

Michael_Davies

Вы имеете в виду, что хотите обновить item.itemstatus, где repair.status=2?

Многое зависит от версии SQL, которую вы используете;

https://stackoverflow.com/questions/1293330/how-can-i-do-an-update-statement-with-join-in-sql

Vincent Warte

Спасибо, это полезно для будущего.

1 Ответов

Рейтинг:
6

ZurdoDev

Вы не хотите делать вставку, а скорее обновление. И ваш sql как раз там.

UPDATE i
SET itemstatus = '2'
FROM Item i
LEFT JOIN Repair r ON i.REPAIRID = r.REPAIRID
WHERE r.STATUS = '2' AND i.ITEMSTATUS = '1'


Vincent Warte

Большое вам спасибо, это именно то, что я искал.

ZurdoDev

Пожалуйста.