2016-09-23 25 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我想补充的方案时,t.TypeId!= d.FkFeeTypeId那么d.FkFeeTypeId回报。我有一个收费类型的表中提到的所有英尺类型,并在产生费用我添加额外的英尺类型的文本框的情况下,如果footype没有在英文字型表中提到,所以用户可以手动写脚型和数量。在获取费用详细信息时,将选择在英式类型表中找到的所有英尺类型,并且如果在其表格中未找到英尺类型,则会按照原样选择d.FkFeeTypeId。 对不起我的英文不好:) 在此先感谢。

+0

当t.TypeId!= d.FkFeeTypeId时,您期望在结果中获得新的一行?或者您希望在结果中为每个FeeType设置一个列? – Sparrow

+0

很确定你需要的是将FeeType上的连接改为左连接。为自己做个忙,不要害怕使用一些空白区域。当您将所有左对齐的内容填充并留下空格时,您的查询很难阅读得比他们需要的更多。 –

+0

@SeanLange - 他有很多疯狂的标签。 – Hogan

回答

0

作为建议,在连接查询中不要使用负运算符。如果您需要使用负运算符,请在where部分使用它。

相关问题