I have a problem with SQL query. I have 3 tables, and I want to select people assigned to projects. Here's my statement:
SELECT e.employee_id, e.name, p.project_name from Employee e, Projects p
INNER JOIN Projects_Employees ON Employee.employee_id = Projects_Employees.employee_id
INNER JOIN Projects ON Projects.project_id = Projects_Employees.project_id;
and the code:
CREATE TABLE Employee (
employee_id NUMBER(10) NOT NULL PRIMARY KEY,
name VARCHAR2(50) NOT NULL,
address VARCHAR2(100) NOT NULL
);
CREATE TABLE Projects (
project_id NUMBER(10) NOT NULL PRIMARY KEY,
project_name VARCHAR(200) NOT NULL
);
CREATE TABLE Projects_Employees (
id NUMBER(10) NOT NULL PRIMARY KEY,
employee_id NUMBER(10) NOT NULL,
project_id NUMBER(10) NOT NULL,
CONSTRAINT employee_fk FOREIGN KEY (employee_id) REFERENCES Employee(employee_id),
CONSTRAINT project_fk FOREIGN KEY (project_id) REFERENCES Projects(project_id)
);
INSERT INTO
Employee(employee_id, name, address) VALUES
(1, 'Joe Doe', '11 Henry Smith St.Chelsea, MA 02150');
INSERT INTO
Employee(employee_id, name, address) VALUES
(2, 'James Doe', '74 East Sierra Ave. Batavia, OH 45103');
INSERT INTO
Projects(project_id, project_name)
VALUES (1, 'YYY');
INSERT INTO
Projects(project_id, project_name)
VALUES (2, 'XXX');
INSERT INTO Projects_Employees(id, project_id, employee_id)
VALUES (1, 1, 1);
INSERT INTO Projects_Employees(id, project_id, employee_id)
VALUES (2, 1, 2);
INSERT INTO Projects_Employees(id, project_id, employee_id)
VALUES (3, 2, 1);
And im getting ORA-00904: "EMPLOYEE"."EMPLOYEE_ID": invalid identifier
: http://sqlfiddle.com/#!4/c70f4/1
try this one.
SELECT Employee.name,Projects_Employees.employee_id,Projects.project_name
FROM Projects_Employees
INNER JOIN Employee ON Employee.employee_id = Projects_Employees.employee_id
INNER JOIN Projects ON Projects.project_id = Projects_Employees.project_id;
Because you have given alias e
to employees
table, you will have to use that alias to refer columns of that table.
You should use following query:
SELECT e.employee_id, e.name, p.project_name
from Employee e
JOIN Projects p on <join condition>
INNER JOIN Projects_Employees ON E.employee_id = Projects_Employees.employee_id
INNER JOIN Projects ON Projects.project_id = Projects_Employees.project_id;
Also, why you have used projects
table twice in your query? You can remove one if not needed.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.