У меня есть вопрос с домашним заданием, который требует от меня вернуть имя старшего ребенка человека, а в случае связей вернуть все связи.
Схема для базы данных:
create table persons (
fname char(12),
lname char(12),
bdate date,
bplace char(20),
address char(30),
phone char(12),
primary key (fname, lname)
);
create table births (
regno int,
fname char(12),
lname char(12),
regdate date,
regplace char(20),
gender char(1),
f_fname char(12),
f_lname char(12),
m_fname char(12),
m_lname char(12),
primary key (regno),
foreign key (fname,lname) references persons,
foreign key (f_fname,f_lname) references persons,
foreign key (m_fname,m_lname) references persons
);
Мой текущий запрос
SELECT fname, lname, min(bdate)
from (SELECT *
from persons
JOIN births using (fname, lname)
WHERE f_fname='Michael' and f_lname='Fox');
Где Майкл Фокс - это лицо, о котором идет речь. Ожидаемый результат -
Q4|MFOld
Q4|MFOld2
, но я могу получить только первого старшего ребенка. Я попытался использовать оператор With
, но нам не разрешено использовать представления или временные таблицы для ответа на этот вопрос. Я также изучал использование Rank (), но, насколько мне известно, это было введено в insqlite v3.25, но этот вопрос будет проверен с использованием v3.11. Любое понимание того, как эти связи могут быть возвращены?