Не удается получить оператор SQL для обновления из 2 таблиц? - PullRequest
0 голосов
/ 02 мая 2011

В настоящее время у меня есть база данных с двумя таблицами, в одной из которых указывается информация о работе и другая информация о компании.«Company_name» существует в таблице «Jobs», которая будет иметь соответствующую запись в таблице «Companies» под полем «name».Я хочу в основном установить поле в таблице «Companies» для «comp_id» равным значению поля «id» в таблице «Jobs», ГДЕ «name» в таблице «Companies» равно "company_name "в таблице" Jobs ".

Я создал запрос, который, по моему мнению, должен работать, однако он не возвращает никаких затронутых строк ??Может кто-нибудь, пожалуйста, помогите мне с этим?

UPDATE `jobs`, `companies` 
       SET `comp_id` = 'companies.id' 
WHERE ('companies.name' = 'jobs.company_name')

Спасибо

Ответы [ 3 ]

1 голос
/ 02 мая 2011

Это условие:

ГДЕ ('companies.name' = 'jobs.company_name')

- это одна проблема (если только это не ошибка копирования и вставки при публикации)

Вы сравниваете две строковые литералы (и, разумеется, они не совпадают, вы никогда не обновите ничего).

Причина в том, что вы используете одинарные кавычки, которые обозначают строковый литерал.Чтобы заключить в кавычки имена столбцов, вам нужно либо использовать двойные кавычки, либо обратные кавычки, которые вы использовали ранее (при условии, что вы используете MySQL).

0 голосов
/ 02 мая 2011

Вы можете обновить только 1 таблицу в выражении UPDATE в SQL Server.Для одновременного обновления нескольких таблиц доступны следующие параметры:

  1. Использовать сохраненные процедуры

  2. Создать представление оператора select и удалить изпросмотр

  3. Использование триггеров.

0 голосов
/ 02 мая 2011

Читая ваш вопрос, вы обновляете только одну таблицу, а не две?

Я хочу в основном установить поле в таблица «Компаний» для comp_id быть значением поля "id" в Таблица «Работа», ГДЕ «имя» в Таблица «Компании» равна "company_name" в таблице "Jobs".

Все, что вы хотите сделать, это установить для столбца comp_id в таблице companies значение столбца id в таблице jobs, где столбцы name и company_name совпадают?

Чтобы сделать это с помощью MSSQL, вы должны сделать что-то вроде этого:

Update c
Set c.comp_id = j.Id
From dbo.Companies c
Join dbo.Jobs j on c.Name = j.Company_Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...