SQL 数据库查询
SQL Queries for a database
我在 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';
我做错了什么?
先感谢您! :)
以下是您可能如何完成第一项任务(居住在其部门所在城市以外城市的员工):
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;
为了确定给定员工工作的部门,您需要加入 Works
table。
我不得不承认,将员工数据垂直划分为 Employee
和 Works
table 有点奇怪 - 没有真正的理由将这两者分开tables(这是一对一的关系)。就此而言,Manages
也不必是单独的 table。
希望这能让您在第二次查询时走上正确的道路。
我在 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';
我做错了什么? 先感谢您! :)
以下是您可能如何完成第一项任务(居住在其部门所在城市以外城市的员工):
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;
为了确定给定员工工作的部门,您需要加入 Works
table。
我不得不承认,将员工数据垂直划分为 Employee
和 Works
table 有点奇怪 - 没有真正的理由将这两者分开tables(这是一对一的关系)。就此而言,Manages
也不必是单独的 table。
希望这能让您在第二次查询时走上正确的道路。