数据库的SQL查询

数据库的SQL查询,sql,sql-server,database,sql-server-2008,Sql,Sql Server,Database,Sql Server 2008,我有一个关于DB的作业。我的疑问有些问题。我是SQL新手。 这是我的桌子: CREATE TABLE Employee ( employee_name varchar(20) NOT NULL PRIMARY KEY, street varchar(30) NOT NULL, city varchar(20) NOT NULL ) CREATE TABLE Works ( employee_name varchar(20) NOT NULL, department_name varchar(2

我有一个关于DB的作业。我的疑问有些问题。我是SQL新手。 这是我的桌子:

CREATE TABLE Employee (
employee_name varchar(20) NOT NULL PRIMARY KEY,
street varchar(30) NOT NULL,
city varchar(20) NOT NULL
)

CREATE TABLE Works
(
employee_name varchar(20) NOT NULL,
department_name varchar(20) NOT NULL,
title varchar(10) NOT NULL,
salary int NOT NULL,
PRIMARY KEY (employee_name),
FOREIGN KEY (employee_name) REFERENCES Employee,
FOREIGN KEY (department_name) REFERENCES Department
)

CREATE TABLE Department
(
department_name varchar(20),
cityvarchar(20),
PRIMARY KEY (department_name)
)

CREATE table Manages(
employee_name varchar(20) not null,
manager_name varchar (20) not null,
PRIMARY KEY(employee_name),
FOREIGN KEY(employee_name) REFERENCES Employee
)
查找与所在部门居住在不同城市的员工姓名。 这是我的密码:

SELECT E.employee_name
FROM Employee E
JOIN Department D
ON E.city = D.city
WHERE E.city <> 'Roma';
SELECT E.employee_name
FROM Employee E
INNER JOIN Department D
ON E.city = D.city
INNER JOIN Manages M
ON E.employee_name = M.employee_name
WHERE city='Roma' AND street='Main street';
我做错了什么?
先谢谢你!:)

以下是您如何完成第一项任务(居住在本部门以外城市的员工):

选择E.employee\u名称
来自员工E加入工作W
在E.employee_name=W.employee_name上
加入D部门
W.部门名称=D.部门名称
其中D.city E.city;
为了确定给定员工工作的部门,您需要加入
works

我必须承认,将员工数据垂直划分为
employee
Works
表有点奇怪-没有真正的理由将这两个表分开(这是1-1关系)。因此,
管理
也不需要是一个单独的表


希望这能让你在第二个问题上走上正确的道路。

我不认为“罗马”和“大街”是你试图回答的问题的一部分…@Nicolaferro是的,你是对的。我能清楚地看到我的错误。谢谢:)你需要加入外键。对于第一个问题,请查看表格定义;是什么将employee表连接到works表,然后是什么将works表连接到department表?加入这些键并使用“Where”子句进行筛选。@JoelGregory感谢您的帮助!这对我有用。关于在哪里可以找到好的在线教程,有什么建议吗?谢谢你的帮助:)
SELECT E.employee_name
  FROM Employee E JOIN Works W
    ON E.employee_name = W.employee_name
  JOIN Department D
    ON W.departent_name = D.department_name
 WHERE D.city <> E.city;