簡體   English   中英

如何在MySQL中將表與條件的結果字段聯接

[英]How to join a table with a result field of a condition in MySQL

我有一個SQL查詢,在我的SELECT部分中,有一個列是IF語句的結果。 正如你所看到的“ final_vendor_id ”包含的值ioproductrel.vendorid除非它的值為null0 ,因為在這種情況下的價值products.vendor_id使用:

SELECT 
    IF(ioproductrel.vendorid IS NULL OR ioproductrel.vendorid = 0, products.vendor_id, ioproductrel.vendorid) AS 'final_vendor_id',
    account.accountname AS 'account',
    salesorder.duedate
FROM 
    internalorder LEFT JOIN ioproductrel ON internalorder.internalorderid = ioproductrel.internalorderid
    LEFT JOIN products ON ioproductrel.productid = products.productid 
    LEFT JOIN slip_relations ON internalorder.internalorderid = slip_relations.child_crmid
    INNER JOIN salesorder ON slip_relations.parent_crmid = salesorder.salesorderid
    LEFT JOIN account ON salesorder.accountid = account.accountid
    LEFT JOIN account AS acc2 ON acc2.accountid = final_vendor_id
WHERE 
    internalorder.internalorderid = 8982

我想基於此“ final_vendor_idfinal_vendor_id表,但是我只收到一個錯誤,即不存在具有該名稱的字段。

如果我再次在JOIN部分中寫完整的IF語句,這似乎可以工作,但是我不確定它是否安全,我想知道是否有比這更簡單的方法:

SELECT 
    IF(ioproductrel.vendorid IS NULL OR ioproductrel.vendorid = 0, products.vendor_id, ioproductrel.vendorid) AS 'final_vendor_id',
    account.accountname AS 'account',
    salesorder.duedate
FROM 
    internalorder LEFT JOIN ioproductrel ON internalorder.internalorderid = ioproductrel.internalorderid
    LEFT JOIN products ON ioproductrel.productid = products.productid 
    LEFT JOIN slip_relations ON internalorder.internalorderid = slip_relations.child_crmid
    INNER JOIN salesorder ON slip_relations.parent_crmid = salesorder.salesorderid
    LEFT JOIN account ON salesorder.accountid = account.accountid
    LEFT JOIN account AS acc2 ON acc2.accountid = IF(ioproductrel.vendorid IS NULL OR ioproductrel.vendorid = 0, products.vendor_id, ioproductrel.vendorid)
WHERE 
    internalorder.internalorderid = 8982

如果在左連接部分中設置單引號怎么辦:
... ON acc2.accountid ='final_vendor_id'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM