2013-12-23 55 views
0

我已经做了以下查询,但是当我尝试选择多一列时,我没有得到任何结果。我只是不知道如何选择该列(if语句是有问题的)。MySQL选择列,如果它存在

东西是sub_acc列中的cash_payment_detail表也可以是null。任何帮助都意味着很多。请注意,我仍在学习。

SELECT 
    LPAD(cash_payments_detail.`control_acc`,5,0) AS Control_Account, 
    CAccountDescription As Control_Account_Name, 
    LPAD(cash_payments_detail.`sub_acc`,4,0) AS Sub_Account, 
    **if (coasub.`SAccountNo` = cash_payments_detail.`sub_acc`, coasub.`SAccountDescription`," ") As Sub_Account_Name** 
FROM 
    coasub, coacontrol, `cash_payments_detail` cash_payments_detail INNER JOIN `cash_payments` cash_payments ON cash_payments_detail.`cpvno` = cash_payments.`cpvno` 
WHERE 
control_acc = coacontrol.`CAccountNo` 
+0

大胆(**)列不会在查询中显示。 – Roger

+0

哎呦抱歉,它的**,if语句 – user1361430

+0

1)你必须使用'OUTER JOIN'例如'LEFT JOIN' 2)不要混合使用逗号样式和ANSI样式'JOIN's – peterm

回答

0

你的问题是在连接你做,你要学会的加入以及写这样的查询之前,您会注意到你一起写不返回记录时 cash_payment_detail.sub_acc为空 左连接将返回空值;) 使用LEFT JOIN代替内加入 ... 尝试此查询:

SELECT 
cash_payments.cpvno AS Voucher_Number, date_format(cash_payments.vdate,'%d %M %Y') AS Voucher_Date, 
sec_users.name AS Entered_By, cash_payments.payto AS Payment_To, cash_payments.payref AS On_Account_Of, LPAD(cash_payments.branch,5,0) AS Cash_Control_Account, branches.cash_control_name AS Cash_Control_Name, 
branches.name AS Branch_Name, 
LPAD(cash_payments_detail.control_acc,5,0) AS Control_Account, CAccountDescription As Control_Account_Name, 
LPAD(cash_payments_detail.sub_acc,4,0) AS Sub_Account, if (SAccountNo = sub_acc, SAccountDescription," ") As Sub_Account_Name, 
cash_payments_detail.job_no AS Job, cash_payments_detail.narration AS Narration, cash_payments_detail.debit AS Debit 
FROM 
coasub, coacontrol, branches, sec_users, cash_payments_detail cash_payments_detail 
LEFT JOIN cash_payments cash_payments ON cash_payments_detail.cpvno = cash_payments.cpvno 
WHERE 
control_acc = coacontrol.CAccountNo AND cashcontrol = cash_payments.branch AND cash_payments.login = sec_users.login 
+0

感谢您的回复。对此,我真的非常感激。我试了左连接,甚至完全删除了连接,并使用where子句,但没有运气编辑:没关系我想通了,混合了联接。感谢帮助。 – user1361430

相关问题