2012-04-13 11 views
0

私は作業している問題が少し残っていて、助けていただければ幸いです。私はHAVING句を使用する必要があると信じていますが、正しく動作させる方法を理解することはできません。複数のメンバーを表示するのではなく、1人のメンバーを表示してすべてを追加します。句の問題がある - 間違ったデータを返す

クエリでは、詳細な賃貸料が全体の平均賃貸料の2倍を超える各顧客を記載する必要があります。出力は会員番号でソートする必要があります。

Mem_num mem_fname mem_lnameトータル)detail_fee 103カート・ナイト7.50 105イヴァMclain 7.00 110ルイスRossale 9.00 111ステイシー・マン9.00

select m.mem_num, mem_fname, mem_lname, sum(detail_fee), avg(detail_fee) 
from membership as m, rental as r 
left outer join detailrental as d on (r.rent_num = d.rent_num) 
group by detail_fee 
having sum(detail_fee); 

答えて

0
select m.mem_num, mem_fname, mem_lname, sum(detail_fee) as sum_fee, avg(detail_fee) as avg_fee 
from membership as m, rental as r 
left outer join detailrental as d on (r.rent_num = d.rent_num) 
group by mem_num 
having sum_fee > 2 * avg_fee; 

上記のクエリは、よりビット "righter" でありますあなた。問題は次のとおりです。

from membership as m, rental as r 

これはクロスジョインです。つまり、メンバーシップの各行はレンタルの各行に接続されています。これは私が推測する間違った結果を与えるでしょう。これらの2つのテーブル間に接続はありませんか?何かのように

from membership as m 
inner join rental as r 
on m.id = r.member_id 

+0

ありがとうございました!ここで働いている完成品です。 Total_Detail_Fee、avg(detail_fee)としてのm_em_num、mem_fname、mem_lname、sum(detail_fee)をavg_feeとして選択します。 メンバーシップはmから 内部結合レンタルはrとm.mem_num = r.mem_num 左外部には、 r_rent_num = d.rent_num) グループby mem_num Total_Detail_Fee> 2 * avg_fee; – user1331726

+0

@ user1331726この回答が役に立ったとき、あなたはそれを受け入れることができます。 – fancyPants

関連する問題