簡體   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