Mysql SQL查询:所有最大保留服务器的列表
我有以下模式:Mysql SQL查询:所有最大保留服务器的列表,mysql,database,Mysql,Database,我有以下模式: sailor: ssn, fname, lname, address reservation: sailor_ssn, date_reserved, boat_reg# boat: reg#, bname, color, model# 我想列出所有最大保留服务器的名称。如果一个水手预订的船不是其他水手的合适子集,那么他就是一个最大的预订者 提前感谢我提出了以下问题: SELECT p.fname, p.lname FROM sail.person p JOIN sail.sa
sailor: ssn, fname, lname, address
reservation: sailor_ssn, date_reserved, boat_reg#
boat: reg#, bname, color, model#
我想列出所有最大保留服务器的名称。如果一个水手预订的船不是其他水手的合适子集,那么他就是一个最大的预订者
提前感谢我提出了以下问题:
SELECT p.fname, p.lname
FROM sail.person p
JOIN sail.sailor s ON p.ssn = s.ssn
JOIN
(SELECT DISTINCT r4.sailor_ssn
FROM sail.reservation r4
WHERE r4.sailor_ssn NOT IN
(SELECT T3.sailor_ssn
FROM
(SELECT *
FROM
(SELECT r1.sailor_ssn, r2.sailor_ssn sssn, count(*) ctr1
FROM sail.reservation r1
JOIN sail.reservation r2 ON r1.boat_reg# = r2.boat_reg#
AND r1.sailor_ssn != r2.sailor_ssn
GROUP BY r1.sailor_ssn, r2.sailor_ssn) T1
JOIN
(SELECT r3.sailor_ssn rssn, count(*) ctr2
FROM sail.reservation r3
GROUP BY r3.sailor_ssn) T2
ON T1.sailor_ssn = T2.rssn) T3
where T3.ctr1 = T3.ctr2)) T4
ON T4.sailor_ssn = s.ssn;
有没有更好的解决办法