스탠포드 무료 온라인 과정 (나는 권장 함)을 수행하고 있으며 다음과 같은 문제에 봉착했습니다. 도와주세요.이중 중첩 수준의 SQL 쿼리
가브리엘이라는 사람과 친구 인 모든 학생의 이름을 찾습니다.
내가 생각할 수있는 최선의 방법입니다.
select name
from highschooler h
where h.id exists in (
select friend.id1
from friend
where friend.id2 exists in (
select h.id
from highschooler h2
where h2.name="gabriel"
)
);
는 내가 테스트 장소로 MySQL의 워크 벤치를 사용하고 있지만 SQL Lite에서 쿼리를 실행하는 데 필요한거야 (나는 그들이 이와 같은 기본적인 쿼리에 대해 상대적으로 유사하다는 것을 알 수있다).
/* Create the schema for our tables */
create table Highschooler(ID int, name text, grade int);
create table Friend(ID1 int, ID2 int);
create table Likes(ID1 int, ID2 int);
/* Populate the tables with our data */
insert into Highschooler values (1510, 'Jordan', 9);
insert into Highschooler values (1689, 'Gabriel', 9);
insert into Highschooler values (1381, 'Tiffany', 9);
insert into Highschooler values (1709, 'Cassandra', 9);
insert into Highschooler values (1101, 'Haley', 10);
insert into Highschooler values (1782, 'Andrew', 10);
insert into Highschooler values (1468, 'Kris', 10);
insert into Highschooler values (1641, 'Brittany', 10);
insert into Highschooler values (1247, 'Alexis', 11);
insert into Highschooler values (1316, 'Austin', 11);
insert into Highschooler values (1911, 'Gabriel', 11);
insert into Highschooler values (1501, 'Jessica', 11);
insert into Highschooler values (1304, 'Jordan', 12);
insert into Highschooler values (1025, 'John', 12);
insert into Highschooler values (1934, 'Kyle', 12);
insert into Highschooler values (1661, 'Logan', 12);
insert into Friend values (1510, 1381);
insert into Friend values (1510, 1689);
insert into Friend values (1689, 1709);
insert into Friend values (1381, 1247);
insert into Friend values (1709, 1247);
insert into Friend values (1689, 1782);
insert into Friend values (1782, 1468);
insert into Friend values (1782, 1316);
insert into Friend values (1782, 1304);
insert into Friend values (1468, 1101);
insert into Friend values (1468, 1641);
insert into Friend values (1101, 1641);
insert into Friend values (1247, 1911);
insert into Friend values (1247, 1501);
insert into Friend values (1911, 1501);
insert into Friend values (1501, 1934);
insert into Friend values (1316, 1934);
insert into Friend values (1934, 1304);
insert into Friend values (1304, 1661);
insert into Friend values (1661, 1025);
insert into Friend select ID2, ID1 from Friend;
insert into Likes values(1689, 1709);
insert into Likes values(1709, 1689);
insert into Likes values(1782, 1709);
insert into Likes values(1911, 1247);
insert into Likes values(1247, 1468);
insert into Likes values(1641, 1468);
insert into Likes values(1316, 1304);
insert into Likes values(1501, 1934);
insert into Likes values(1934, 1501);
insert into Likes values(1025, 1101);
대단히 감사합니다!
나는 DISTINCT를 추가 할 것이다 –
@Andrey 나는 여기에서 별개라고 생각하지 않는다. 표에 여러 이름을 사용할 수 있습니다. – AdamMc331
네, 맞습니다. –