例题:关系较复杂
personinstory表 love表
● 先按照性别,然后按照美丽程度由高往低的顺序, 列出所有人物的名字,性别和美丽程度
select Person.pname 名字,Person.psex性别,Person.pbeauty美丽程度 from Person order by psex,pbeauty desc
● 先按照人名,然后按照被爱的人名的顺序,列出 所有爱情关系的施爱人,被爱人,爱情指数,受伤指 数
select p1.pname 施爱人,p2.pname 被爱人,love.love_index爱情指数,love.iniury_index受伤指数 from Person p1,Person p2,love where p1.pid =love.pid and p2.pid=love.lovepid order by pl.pname,p2.pname
● 哪些男人没有得到任何一个女人的爱?
select Person.pname没有得到爱的男人 from Person where Person.psex='男' and Personpid not in (select love.lovepid from love)
● 哪些男人至少爱着2个女人?
select Person.pname 至少爱着两个女人的男人 from love,Person group by love.pid,Person.pname,Person.pid having count(love.pid)>1 and Person.pid=love.pid and love.pid in( select Person.pid from Person where Person.psex='男')
● 哪个人得到了最多人的爱情?
select Person.pname 得到了最多爱的人 from Person where Person.pid=( select top(1) love.lovepid from love group by love.lovepid order by count(*) desc)
● 列出所有人的姓名,以及爱他的人的数量
select Person.pname, (select count(*) from love where love.pid=Person.pid) 爱他的人的数量 from Person order by 2 desc
● 列出男人的追求者的平均美貌程度
select p1.pname 被追求者姓名,avg(p2.pbeauty) '平均美貌程度' from love,Person p1,Person p2 where p1.pid=love.lovepid and p1.psex=’男’and p2.pid=love. pid group by pl.pnane
● 列出追求者的平均爱情指数最低的男人的姓名,及其追求者的姓名和爱情指数
select p1.pname 追求者的平均爱情指数最低的男人,p2.pname 追求者,love.love_index 追求者的爱情指数 from Person p1,Person p2,love where p1.pid=love.lovepid and p2.pid=love.pid and p2.pid in( select top 1 love.lovepid from love,Person where Person.psex='男' and love.lovepid=Person.pid group by love.lovepid order by avg(love.love_index) )