I have to create a sql statement which shows the sheepname and his/her number of brothers and sister.
This is my sql script:
create table breeder (
breederNumber number(3) primary key,
name varchar2(20),
residence varchar2(20),
password varchar2(20)
);
create table race (
raceCode varchar2(2) primary key,
raceName varchar2(20) not null
);
create table sheep (
earTagNumber number(2) primary key,
father number(2),
mother number(2),
raceCode varchar2(2),
name varchar2(20),
previousBreeder number(3),
genotype varchar2(7),
gender varchar2(1) check (gender = 'M' OR gender = 'F'),
constraint fk_previousBreeder foreign key (previousBreeder) references breeder(breederNummer) on delete cascade,
constraint rk_raceCode foreign key (raceCode) references race(raceCode) on delete cascade,
constraint fk_mother foreign key (mother) references sheep(earTagNumber) on delete cascade,
constraint fk_father foreign key (father) references sheep(earTagNumber) on delete cascade
);
The outcome should look like this
I'm supposed to use an outer join, but I have no idea how the sql statement should look like.
Can anyone help me?
Thanks in advance!
select s1.earTagNumber, max(s1.name), count(s2.earTagNumber)
from sheep s1
left join sheep s2 on (s1.father=s2.father) or (s1.mother=s2.mother)
group by s1.earTagNumber
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.