2014-01-25 57 views
0

因此,這裏的情況,我做了兩個表:SQL:選擇特定的數據涉及兩個不同的表

表1:

create table Show (
    id number(5), 
    moderator_id number(5), 
    length number(3),  
    title varchar(100), 
    details varchar(30) 
); 

表2:

create table Moderator (
    id number(5), 
    name varchar(30), 
    surname varchar(30) 
); 

兩個表是關係:1(主持人),N(顯示) 我需要一個顯示主持人姓名的命令,它具有最大的總長度(Show.length表示單個顯示的長度)。

+0

你有什麼想法?你會如何做到這一點? –

回答

2

這應該這樣做...

select * from (select name,surname from moderator 
    inner join show on moderator_id = moderator.id 
    group by moderator.id,name,surname 
    order by sum(length) desc) 
where rownum = 1 

編輯:採用樣本數據測試中sqlfiddle - http://sqlfiddle.com/#!4/1a264/10/0

+2

你的GROUP BY沒有足夠的辨別力;你必須用唯一的標識符來完成。否則,如果我添加另一個同名的人,我可以打破你的模型:http://sqlfiddle.com/#!4/4c9ac/1 – Ben

+0

謝謝@Ben我已經添加moderator.id到group by子句。 – MrVimes