基本SQL查询

基本SQL查询,sql,Sql,我有一个大学考试的问题,如果有人能看一下,我将不胜感激 列出在赞助演出中放映的最长影片的所有细节 乔的餐车旁 表: Sponsor (sid, sname, business type) Film (director, title, length) Cinema (cname, address, seating capacity) Performance (director, title, cname, pdate, price, sid) Sponsor (sid, sname, busin

我有一个大学考试的问题,如果有人能看一下,我将不胜感激


列出在赞助演出中放映的最长影片的所有细节 乔的餐车旁

表:

Sponsor (sid, sname, business type)
Film (director, title, length)
Cinema (cname, address, seating capacity)
Performance (director, title, cname, pdate, price, sid)
Sponsor (sid, sname, business type)
Film (director, title, length)
Cinema (cname, address, seating capacity)
Performance (director, title, cname, pdate, price, sid)
我的答案是:

SELECT f.director, f.title, max(f.length)
FROM (film f 
      JOIN performance p ON f.director=p.director AND f.title=p.title
     ) 
JOIN sponsor s USING sid
WHERE sname='Joe’s Diner'
GROUP BY f.director, f.title;

列出由Joe's Diner赞助的演出中放映的最长电影的所有细节

表:

Sponsor (sid, sname, business type)
Film (director, title, length)
Cinema (cname, address, seating capacity)
Performance (director, title, cname, pdate, price, sid)
Sponsor (sid, sname, business type)
Film (director, title, length)
Cinema (cname, address, seating capacity)
Performance (director, title, cname, pdate, price, sid)
查询:

SELECT TOP 1 * FROM Film --top 1 and order by get longest
INNER JOIN Performance --you have to join performance so you can join sponsor
    ON Film.director = Performance.director
    AND Film.title = Performance.title
INNER JOIN Sponsor --so you can limit to Joe's
    ON Performance.sid = Sponsor.sid
WHERE Sponsor.sname = 'Joe''s Diner'  --to get only this guy
ORDER BY Film.length DESC  --to get longest with top 1

未测试。

好的,你的问题是什么?目标DBMS是什么?你们认为它正确吗?@LaszloMoricz:-执行查询并检查是否得到了想要的。如果没有,请提供更多详细信息。这将返回由
Joe's Diner
赞助的所有电影,以及它的最大(长度)可能与它的长度相同。事实上,如果删除Max和,并将length添加到group by,则可能会返回相同的结果。不,不完全正确。取而代之的是,你应该先找到《乔的教堂》(Joe's cathouse)赞助的最大长度的电影,然后再考虑找到所有电影的细节。当然需要一个子查询。