2016-09-23 16 views
0

私はストアドプロシージャの作成に助けが必要です。私は学校のシステムに取り組んでおり、私は別のテーブルから料金の詳細を取得したい。まず、すべてのコードを参照してください。私は結合を使用してテーブルからデータを取得

@payment_id varchar(150), @campus_id varchar(150) as 
begin 
    select s.GR,s.Name,s.FatherName,c.Class+' (' +s.Section+ ')' as Class,f.ChallanNo,f.IssueDate,f.DueDate,f.FeeMonth,t.Name as FeeName, 
d.Amount 
    from FeePayment f 
    join Student s ON s.StudentId = f.FkStudentId 
       and f.PaymentId = @payment_id 
       and f.FkCampusId = @campus_id 
    join ClassDetail c ON c.ClassId = s.FkClassId 
    join FeeDetail d ON f.PaymentId = d.FkpaymentId  
    join FeeType t ON t.TypeId = d.FkFeeTypeId 
end 

を書かれているこのコードは正常に動作しているが、FeeTypeに、私はその後、d.FkFeeTypeIdの復帰時にt.TypeId!= d.FkFeeTypeIdシナリオを追加します。私はすべてのfootypesが記述されている料金タイプのテーブルを持っていると私は手数料を生成する場合は、ユーザーが手動で足の種類と量を書くことができるように足タイプがfootypeテーブルに記載されていない場合、料金の詳細を得ている間に、足のタイプのテーブルにあるすべての足のタイプが選択され、足のタイプがそのテーブルに見つからない場合、d.FkFeeTypeIdはそのまま選択されます。 私の悪い英語を申し訳ありません:) ありがとうございます。

+0

t.TypeId!= d.FkFeeTypeIdの場合、結果に新しい行が追加される予定ですか?結果にFeeTypeごとに列が必要ですか? – Sparrow

+0

FeeTypeの結合を左結合に変更するだけで十分です。そして、自分自身に好意を持って、空白を使うのを怖がってはいけません。左揃えのすべてを詰め込み、空白を残さないと、照会は必要以上に読みにくくなります。 –

+0

@SeanLange - 彼はそこにたくさんのクレイジーなタブを持っていました。 – Hogan

答えて

0

結合クエリでは、負の演算子を使用しないでください。負の演算子を使用する必要がある場合は、where部分でそれを使用します。

関連する問題