显示具有公共列的行

问题描述 投票:0回答:1

我需要显示患有咳嗽和失眠症患者的患者姓名,因为他们没有显示在同一行,我不能简单地使用AND命令。请帮忙

我尝试搜索一个帖子,你在列中显示具有常见值的行,但我没有找到任何行

CREATE TABLE Unit
(
    unitNumber VARCHAR(5),
    unitName VARCHAR(20),
    unitAddress VARCHAR(20),
    CONSTRAINT unit_pk PRIMARY KEY(unitNumber)
)

CREATE TABLE Employee
(
    empID VARCHAR(11),
    empName VARCHAR(20),
    empAddress VARCHAR(20),
    empPhoneNumber VARCHAR(10),
    empSalary INT,
    unitNumber VARCHAR(5),
    CONSTRAINT employee_pk PRIMARY KEY(empID),
    CONSTRAINT employee_unit_fk FOREIGN KEY(unitNumber) REFERENCES Unit(unitNumber)
)

CREATE TABLE Patient
(
    patientID VARCHAR(11) NOT NULL,
    patientName VARCHAR(20) NOT NULL,
    patientAddress VARCHAR(20),
    patientPhoneNumber VARCHAR(10),
    unitNumber VARCHAR(5),
    CONSTRAINT patient_pk PRIMARY KEY(patientID),
    CONSTRAINT patient_unit_fk FOREIGN KEY(unitNumber) REFERENCES Unit(unitNumber)
)

CREATE TABLE Examines
(
    empID VARCHAR(11),
    patientID VARCHAR(11),
    CONSTRAINT examines_pk PRIMARY KEY(empID,patientID),
    CONSTRAINT examines_employee_fk FOREIGN KEY(empID) REFERENCES Employee(empID),
    CONSTRAINT examines_Patient_fk FOREIGN KEY(patientID) REFERENCES Patient(patientID)
)

CREATE TABLE Illness
(
    illnessName VARCHAR(20),
    CONSTRAINT diagnose_pk PRIMARY KEY(illnessName)
)

CREATE TABLE Suffers
(
    illnessName VARCHAR(20) NOT NULL,
    patientID VARCHAR(11) NOT NULL,
    startDate DATETIME,
    CONSTRAINT suffers_pk PRIMARY KEY(illnessName, patientID),
    CONSTRAINT suffers_illness_fk FOREIGN KEY(illnessName) REFERENCES Illness(illnessName),
    CONSTRAINT suffers_Patient_fk FOREIGN KEY(patientID) REFERENCES Patient(patientID)
)

CREATE TABLE HasSuffered
(
    illnessName VARCHAR(20) NOT NULL,
    patientID VARCHAR(11) NOT NULL,
    CONSTRAINT HasSuffered_PK PRIMARY KEY(illnessName, patientID),
    CONSTRAINT hassuffered_illness_fk FOREIGN KEY(illnessName) REFERENCES Illness(illnessName),
    CONSTRAINT HasSuffered_PPNR_FK FOREIGN KEY(patientID) REFERENCES Patient(patientID)
)

CREATE TABLE Car
(
    licenseNumber VARCHAR(10) NOT NULL,
    brand VARCHAR(20),
    price int,
    empID VARCHAR(11) NULL,
    CONSTRAINT car_pk PRIMARY KEY(licenseNumber),
    CONSTRAINT car_employee_fk FOREIGN KEY(empID) REFERENCES Employee(empID)
)


INSERT INTO Unit VALUES('U1','General Surgery','Hospital road') 
INSERT INTO Unit VALUES('U2','Rehabilitation','Hospital road') 
INSERT INTO Unit VALUES('U3','Trauma','Care road')

INSERT INTO Employee VALUES('E1','Anna','Lund','111',25000,'U1')
INSERT INTO Employee VALUES('E2','Eva','Eslöv','222',55000,'U1')
INSERT INTO Employee VALUES('E3','Anna','Lund','333',37500,'U2')
INSERT INTO Employee VALUES('E4','Hans','Eslöv','444',18000,'U2')
INSERT INTO Employee VALUES('E5','Eva','Malmö','555',279000,'U3')
INSERT INTO Employee VALUES('E6','Peter','Dalby','666',32000,'U1')

INSERT INTO Patient VALUES('PP1','Anna', 'Lund','111','U1')
INSERT INTO Patient VALUES('PP2','Hans','Dalby','777','U1')
INSERT INTO Patient VALUES('PP3','Bo','Lund','888','U3')
INSERT INTO Patient VALUES('PP4','Peter','Lund','999','U3')
INSERT INTO Patient VALUES('PP5','Anna','London','100','U2')
INSERT INTO Patient VALUES('PP6','Anna','Berlin','111','U1')

INSERT INTO Examines VALUES('E1','PP1')
INSERT INTO Examines VALUES('E1','PP2')
INSERT INTO Examines VALUES('E1','PP3')
INSERT INTO Examines VALUES('E2','PP1')
INSERT INTO Examines VALUES('E2','PP3')
INSERT INTO Examines VALUES('E3','PP3')
INSERT INTO Examines VALUES('E3','PP4')
INSERT INTO Examines VALUES('E3','PP5')
INSERT INTO Examines VALUES('E4','PP5')
INSERT INTO Examines VALUES('E4','PP3')
INSERT INTO Examines VALUES('E4','PP4')

INSERT INTO Illness VALUES('Insomnia')
INSERT INTO Illness VALUES('Love sickness')
INSERT INTO Illness VALUES('Cough')
INSERT INTO Illness VALUES('Amnesia')
INSERT INTO Illness VALUES('Incontinence')
INSERT INTO Illness VALUES('Chickenpox')

INSERT INTO Suffers VALUES('Insomnia','PP1','1953-01-12')
INSERT INTO Suffers VALUES('Insomnia','PP2','2006-10-16')
INSERT INTO Suffers VALUES('Insomnia','PP3','1978-01-05')
INSERT INTO Suffers VALUES('Love sickness','PP1','2008-08-08')
INSERT INTO Suffers VALUES('Love sickness','PP2','2003-01-22')
INSERT INTO Suffers VALUES('Cough','PP4','1998-06-07')
INSERT INTO Suffers VALUES('Cough','PP3','1978-05-23')
INSERT INTO Suffers VALUES('Incontinence','PP6','1989-11-11')
INSERT INTO Suffers VALUES('Amnesia','PP6','2010-12-09')

INSERT INTO HasSuffered VALUES('Love sickness','PP1')
INSERT INTO HasSuffered VALUES('Love sickness','PP2')
INSERT INTO HasSuffered VALUES('Cough','PP3')
INSERT INTO HasSuffered VALUES('Cough','PP1')
INSERT INTO HasSuffered VALUES('Love sickness','PP3')
INSERT INTO HasSuffered VALUES('Cough','PP4')
INSERT INTO HasSuffered VALUES('Insomnia','PP3')
INSERT INTO HasSuffered VALUES('Insomnia','PP6')
INSERT INTO HasSuffered VALUES('Amnesia','PP6')

INSERT INTO Car VALUES('C1','saab',30000,null)
INSERT INTO Car VALUES('C2','saab',40000,'E1')
INSERT INTO Car VALUES('C3','volvo',50000,'E2')
INSERT INTO Car VALUES('C4','volvo',60000,'E3')
INSERT INTO Car VALUES('C5','audi',70000,'E4')
INSERT INTO Car VALUES('C6','audi',30000,null)
INSERT INTO Car VALUES('C7','saab',30000,'E5')
sql oracle
1个回答
1
投票

尝试由患者分组并计算患有这两种疾病的人:

SELECT  patientName
FROM    (
          SELECT    patientName,
                    COUNT(PatientName)
          FROM      Patient p
                    JOIN Suffers s
                      ON p.PatientID = s.PatientID
                    JOIN Illness i
                      ON i.IllnessName = s.IllnessName
          WHERE     i.illnessName = 'Cough' OR i.illnessName = 'Insomnia'
          GROUP BY  patientName
          HAVING    COUNT(PatientName) > 1
        ) p
© www.soinside.com 2019 - 2024. All rights reserved.