2017-12-22 17 views
2

M 재귀 관계는, 나는 테이블을 생성하고, 어머니는이 질문에MYSQL 1 : 하루 종일이 문제를 알아 내기 위해 노력했습니다

대답 할 SELECT 문을 만들려고 노력했습니다 심슨 가족 나무에? 가장 오래된 것에서 가장 오래된 것까지 을 나열하십시오.

내 현재 데이터를 사용하면 어떻게 하나의 테이블로이 작업을 수행하는지 알 수 없습니다.

CREATE TABLE person 
(
persID   INT IDENTITY(1,1), 
persFName  VARCHAR(40) NOT NULL, 
persLName  VARCHAR(40) NOT NULL, 
persGender  CHAR(1) NOT NULL, 
persDOB   DATE NOT NULL, 
persDOD   DATE , 
fatherID   INT , 
motherID   INT , 

CONSTRAINT pk_person_persID PRIMARY KEY(persID), 
CONSTRAINT fk_person_fatherID FOREIGN KEY (fatherID) REFERENCES person(persID), 
CONSTRAINT fk_person_motherID FOREIGN KEY (motherID) REFERENCES person(persID), 


); 

는 그리고 이것은 내 데이터

INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Abraham', 'Simpson', 'M', '1944-01-15', '2015-07-21',NULL,NULL) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Mona', 'Simpson', 'F', '1946-09-22', NULL,NULL,NULL) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Herb', 'Simpson', 'M', '1963-11-21',NULL,1,2) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Homer', 'Simpson', 'M', '1965-05-19',NULL,1,2) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Clancy', 'Bouvier', 'F', '1945-02-12',NULL,NULL,NULL) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Jackie', 'Bouvier', 'M', '1945-12-01','2016-05-15',NULL,NULL) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Marge', 'Simpson', 'F', '1966-05-18',NULL,6,5) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Patty', 'Bouvier', 'F', '1964-01-08',NULL,6,5) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Selma', 'Bouvier', 'F', '1969-03-01',NULL,6,5) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Bart', 'Simpson', 'M', '1990-01-01',NULL,4,7) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Lisa', 'Simpson', 'F', '1992-05-15',NULL,4,7) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Maggie', 'Simpson', 'F', '1997-11-28',NULL,4,7) 
INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID) VALUES ('Ling', 'Bouvier', 'M', '2000-04-02',NULL,NULL,9) 
+0

당신은 어머니의 속성에 따라 항목을 선택 lines--이 함께 무언가를하고 생년월일을 기준으로 결과를 정렬 할 것입니다. 또한 올바른 데이터베이스를 선택했는지 확인하십시오. 그렇지 않으면 select 문에 오류가 발생합니다. –

+1

이 MySQL 또는 MS SQL Server입니까? 귀하의 제목은 귀하의 태그가 아니라 다른 하나를 말합니다. – alroc

답변

0

이 당신을 위해 무엇을 찾고있는 당신에게 제공해야하지만, 나는 그것이 가장 현명한 방법입니다 확실하지 않다! 나는이 도움을 바랍니다.

SELECT DISTINCT T2.motherID, 
        T1.persID, 
        T1.PersFName, 
        T1.PersLName, 
        T1.PersGender, 
        T1.PersDOB, 
        T1.PersDOD, 
        T1.FatherID, 
        T1.MotherID 
    FROM person AS T1 
    LEFT JOIN person AS T2 ON T1.persID = T2.motherID 
    WHERE T2.motherID IS NOT NULL 
    AND T1.persLName = 'Simpson' 
    ORDER BY T1.persDOB 
0

이 시도 :

SELECT * 
FROM person 
WHERE persID IN (SELECT DISTINCT motherID FROM person) 
    AND persLNAme = 'Simpson' 
ORDER BY persDOB ASC; 

아이디어는 기본 테이블에서 그들을 추출하는 모든 어머니의 ID를 취득하는 것입니다. 그런 다음 ORDER BY 절을 사용하여 결과를 정렬합니다.

enter image description here