SQL如何获取按职位筛选的用户和部门列表?

时间:2018-07-03 16:01:10

标签: sql postgresql

请帮助我,如何获得按职位筛选的部门用户列表?

CREATE TABLE COMPANY 
(
    ID INT GENERATED BY DEFAULT AS IDENTITY,
    NAME VARCHAR(255),
    PRIMARY KEY (ID),
    UNIQUE KEY COMPANY_NAME (NAME)
);

CREATE TABLE USER
(
    ID INT GENERATED BY DEFAULT AS IDENTITY,
    NAME VARCHAR(255),
    LASTNAME VARCHAR(255),
    DATE_OF_BIRTH DATE ,
    PRIMARY KEY (ID),
);

CREATE TABLE POSITION
(
    ID INT NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    POSITION VARCHAR (50),
    USERID INT NOT NULL,
    PRIMARY KEY (ID),
    FOREIGN KEY (USERID) REFERENCES USER(ID)
);

CREATE TABLE DEPARTMENT
(
    ID INT GENERATED BY DEFAULT AS IDENTITY,
    USER_ID INT NOT NULL,
    COMPANY_ID INT NOT NULL,
    DEPARTMENT_CATEGORY VARCHAR(50),
    PRIMARY KEY (ID),
    FOREIGN KEY (USER_ID) REFERENCES USER(ID),
    FOREIGN KEY (COMPANY_ID) REFERENCES COMPANY(ID)
);

CREATE TABLE CATEGORY 
(
    ID INT NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    NAME VARCHAR (50),
    PRIMARY KEY (ID)
);

CREATE TABLE DEPARTMENT_CATEGORY
(
     DEPARTMENT_ID INT NOT NULL,
     CATEGORY_ID INT NOT NULL,
     FOREIGN KEY (DEPARTMENT_ID) REFERENCES DEPARTMENT(ID),
     FOREIGN KEY (CATEGORY_ID) REFERENCES CATEGORY(ID)
);

请帮助我!

1 个答案:

答案 0 :(得分:1)

您似乎想显示部门和职位表的结果,其中既包含所需的数据,又要具体说明过滤器(职位),因为您需要在where子句中提供它

select user_ID, department
from department as a
join user as b
on a. user_id = b. user_id
where position = 'put the specific position you wanted to be filtered here'

但是您的两个userID列的书写方式不同((User_id或USERID),更正了执行任务时也不会失败的结果

相关问题