2013-08-27 130 views
0

我在MySQL中有一個查詢,我正在用這個做一個水晶報表。從MySQL中加入一列加入表

現在在查詢中我有一個名爲scan_mode的列,它來自gfi_transaction表。這是我在報告中使用的scan_mode壓制某些部分。但是有些時候,這個值對於某些事務id來說是空的。

所以,現在我想把這個scan_mode作爲單獨的查詢,以便它可以工作。 任何人都可以請幫助我如何修改下面的查詢,只採取scan_mode列。

SELECT 
    cc.cost_center_code AS cccde, 
    cc.name AS ccnme,gf.scan_mode, 
    cc.cost_center_id AS ccid, 
    site.name AS siteme, 
    crncy.currency_locale AS currency_locale, 
    cntry.language AS LANGUAGE, 
    cntry.country_name AS cntrynm, 
    crncy.decimal_digits AS rnd, 
    gf.transaction_no AS Serial_No, 
    brnd.name AS brand_name, 
    rsn.description AS reason, 
    gf.comment AS COMMENT, 
    ts.status_description AS STATUS, 
    DATE_FORMAT(gf.created_date,'%d/%m/%Y') AS created_date, 
    gf.created_by AS created_by, 
    IFNULL(gf.approval_no,'Not authorized') AS Trans_no, 
    gf.approved_date AS approval_dt, 
    gf.approved_by AS approved_by,gf.status AS status1, 
    IFNULL(loc.cost_center_code,cc.cost_center_code) AS cur_location, 
    gf.document_ref_no,gf.document_ref_type, 
    ,DATE_FORMAT(document_ref_date1,'%d/%m/%Y')) AS invoice_no 
     FROM 
    gfi_transaction gf 
    INNER JOIN gfi_instruction gfn ON (gf.transaction_id=gfn.transaction_id) 
    INNER JOIN gfi_document_instruction doc ON (gf.ref_transaction_no =  doc.document_instruction_id) 
    INNER JOIN reason rsn ON (gf.reason_id = rsn.reason_id) 
    INNER JOIN gfi_status ts ON (gf.status = ts.gfi_status_id) 
    INNER JOIN transaction_type tt ON (gf.transaction_type_id = tt.transaction_type_id) 
    INNER JOIN brand brnd ON(gf.brand_id=brnd.brand_id) 
    -- cc details 
    INNER JOIN cost_center cc ON (brnd.parent_brand = cc.brand_id OR gf.brand_id = cc.brand_id) 
    INNER JOIN site site ON(cc.site_id = site.site_id) 
    INNER JOIN country cntry ON (site.country_id = cntry.country_id) 
    INNER JOIN currency crncy ON (cntry.currency_id=crncy.currency_id) 
    LEFT OUTER JOIN alshaya_location_details loc ON 
     (gf.brand_id = loc.brand_id AND loc.cost_center_id = gf.cost_centre_id) 
    LEFT OUTER JOIN alshaya_location_details locto ON 
     (locto.cost_center_id = gf.from_cost_center_id)   
WHERE 
    gf.transaction_id='{?TransID}' 
    AND rsn.transaction_type_id IN (10,11,14) 

回答

0

哇,這是一個很大的問題。我在構建的查詢中遇到了類似的問題,並發現if語法是解決我的問題的方法。這也回答了這個問題:MYSQL SELECT WITHIN IF Statement

0

它看起來像scan_mode列來自「gfi_transaction」表,這似乎是主表中查詢。如果此列爲空,那麼這意味着您的表本身具有此列的NULL值。單獨在查詢中解決您的問題。嘗試用默認值替換null並在代碼中處理它。您可以使用ifnull(scan_mode,'default')添加默認值而不是NULL。