从MySQL联接表中获取一列
我在MySQL中有一个查询,我正在使用它制作一个水晶报表 现在在查询中有一个名为scan_mode的列,它来自gfi_事务表。我在报告中使用此扫描模式来抑制某些部分。但是,有时,对于某些事务ID,此值将为空 所以现在我想把这个扫描模式作为单独的查询,这样它就可以工作了。 任何人都可以帮助我如何修改下面的查询,以只采取扫描模式列从MySQL联接表中获取一列,mysql,sql,Mysql,Sql,我在MySQL中有一个查询,我正在使用它制作一个水晶报表 现在在查询中有一个名为scan_mode的列,它来自gfi_事务表。我在报告中使用此扫描模式来抑制某些部分。但是,有时,对于某些事务ID,此值将为空 所以现在我想把这个扫描模式作为单独的查询,这样它就可以工作了。 任何人都可以帮助我如何修改下面的查询,以只采取扫描模式列 SELECT cc.cost_center_code AS cccde, cc.name AS ccnme,gf.scan_mode, cc.c
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)
哇,这是个大问题。我在构建的一个查询中遇到了一个类似的问题,发现if语法可以解决我的问题。这一问题也得到了回答:
看起来扫描模式列来自“gfi\U事务”表,它似乎是查询中的主表。如果此列的值为null,则表示表本身的此列值为null。在查询中单独考虑这一点并不能解决您的问题。尝试用默认值替换null,并在代码中处理它。您可以使用ifnull(扫描模式“默认”)添加默认值而不是NULL
$psdb->query = "SELECT count, s.classid,
if (k.sic != k.siccode, k.siccode, s.siccode) as siccode,
if (k.sic != k.siccode, k.sicdesc, s.sicdesc) as sicdesc,
if (k.sic != k.siccode, k.sicslug, s.sicslug) as sicslug
FROM ...