Как составить правильный update sql (с вложенным запросом) запрос в бд?

Есть запрос вида:
UPDATE
             requests
SET
             requests.title = "договор для АО",
             requests.responsible = (SELECT requests.responsible, users.id FROM requests, users WHERE "переменная с текстом" = users.username),
	     requests.datecreate = "2018-09-18",
	     requests.percent = "0",
	     comment = "коммент",
             status = (SELECT requests.status, status.id FROM requests, status WHERE "переменная с текстом" = status.status)

WHERE
             requests.id = 4


Вопрос: как например, вернуть id из таблицы users при совпадении в столбце users.username с текстовой переменной?
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
LaRN
@LaRN
Senior Developer
Вы не указали как связаны таблицы requests и users, а также requests и status.
Оба подзапроса в данном случае должны возвращать одну строку и одно поле для каждой записи requests иначе будет ошибка.
Если связи нет можно вот так попробовать:
UPDATE requests
   SET requests.title       = "договор для АО",
       requests.responsible = ISNULL((SELECT id 
                                        FROM users 
                                       WHERE username = "переменная с текстом"), requests.responsible),
       requests.datecreate  = "2018-09-18",
       requests.percent     = "0",
       comment              = "коммент",
       status               = ISNULL((SELECT id 
                                        FROM status 
                                       WHERE status = "переменная с текстом"), requests.status)
 FROM requests
WHERE requests.id = 4
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы