繁体   English   中英

从多个与记录匹配的表中获取值,条件为mysql中的if条件

[英]Get values from multiple tables matching the records with if condition in mysql

我在这里输入图像描述,我从6个表(即凭证,采购,采购,供应商,市场,农民)中获取数据,我将凭证表中的ID与采购和采购表进行匹配并获取数据,我的问题是在采购表i中,当我以农民的身份获取源我想从农民表以及卖方和市场表中获取所有数据

我尝试将内部联接与开关盒和内部查询一起使用,但出现错误

SQL查询

SELECT voucher.voucher_id, sourcing.source_proc_id, procurement.procure_id,
case procurement.procure_from
    when 'farmer' then 
               (select procurement.procure_source, farmer.* from   procurement inner join farmer on 
procurement.procure_source =  farmer.farmer_id)
    ELSE 'No Data' END AS Result
  FROM vendor,market,farmer,
       ((voucher inner join sourcing on voucher.voucher_source_id =               sourcing.source_proc_id) inner join procurement on voucher.voucher_proc_id= procurement.procure_id) WHERE voucher.voucher_status = "ACTIVE" group by voucher.voucher_id

农夫表

 farmer_id | farmer_name | farmer_address
  -----------------------------------------
  F_001     | Name        | Address

供应商表

  vendor_id | vendor_name 
  -----------------------
  V_001     | Vendor

凭证表

 voucher_id | voucher_source_id | voucher_proc_id
  ------------------------------------------------
  VOUC_001   | SRC_001           | PROC_001

采购表

procure_id | procure_from | procure_source
  -------------------------------------------
  PROC_001   | farmer       | F_001
  PROC_002   | vendor       | V_001
  Expected output voucher_id | voucher_source_id | procure_id | procure_from | procure_source | farmer_name ----------------------------------------------------------------------------------------- VOUC_001 | SRC_001 | PROC_001 | farmer | F_001 | Name 

请告诉您您遇到的错误是什么。

同时,您可以尝试以下方法。 我很难测试它是否可以工作。 因此,请告知结果和先前的错误。

SELECT 
    voucher.voucher_id,
    sourcing.source_proc_id,
    procurement.procure_id,
    CASE
        WHEN
            procurement.procure_from = 'farmer'
        THEN
            (SELECT 
                    procurement.procure_source, farmer.*
                FROM
                    procurement
                        INNER JOIN
                    farmer ON procurement.procure_source = farmer.farmer_id)
        ELSE 'No Data'
    END AS Result
FROM
    vendor,
    market,
    farmer,
    ((voucher
    INNER JOIN sourcing ON voucher.voucher_source_id = sourcing.source_proc_id)
    INNER JOIN procurement ON voucher.voucher_proc_id = procurement.procure_id)
WHERE
    voucher.voucher_status = 'ACTIVE'
GROUP BY voucher.voucher_id;

我希望它能起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM