2016-05-23 5 views
1

Учитывая эти две таблицы:значения Обновление в MySQL таблицы

  emp        dept 

------|--------|--------| |--------|------------|----------| 
empno | name | deptno | | deptno | dname | loc | 
------|--------|--------| ----------------------|----------| 
7566 | Jones | 20 | | 10 | Accounting | New York | 
7654 | Martin | 30 | | 20 | Research | Dallas | 
7689 | Blake | 30 | | 30 | Sales  | Chicago | 
7782 | Clark | 10 | ---------------------------------- 
7839 | King | 10 | 
------------------------- 

Одним из вопросов является:

Employee 'Clark' has been transferred to the Sales department. Use 
the appropriate query to reflect this change in the amp table. Make 
use of a subquery to determine the department number of the Sales 
department. 

(только что обнаружили данные, используемые в этих таблицах из SQL поваренной книги)

В любом случае я новичок в SQL, и я использую MySQL для завершения этого вопроса. Я думал об использовании запроса UPDATE, но я не могу понять, как включить запрос для определения номера отдела.

ответ

5

Сначала вы выбрали бы DEPTNO для позиции продаж (вы получите 30 по продажам):

SELECT deptno 
FROM dept 
WHERE dname = 'Sales' 

Тогда вы бы взять эту DEPTNO и использовать его в качестве значения вы собираетесь установить DEPTNO в ом для человека по имени Кларк с EMPNO = 7782:

UPDATE emp SET emp.deptno = 
    (SELECT dept.deptno 
    FROM dept 
    WHERE dname = 'Sales') 
WHERE empno = 7782; 
+0

Я получаю сообщение об ошибке: ERROR 1064 (42000): у вас ошибка в вашем SQL синтаксисе; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «UPDATE EMP SET emp.deptno = (SELECT dept.depno FROM отдела WHERE Dname =„Продажи“) » в строке 4 – Yeezus

+0

Мой DeptNo это depno по ошибке, спасибо, хотя !!! – Yeezus

+0

Итак, ваше имя столбца в одной из ваших таблиц «depno» вместо «deptno»? Итак, он работает после небольшого изменения? – Dresden

Смежные вопросы