[英]Is there a better way of this MySQL CASE SELECT?
最后兩個參數是PHP WHERE和ORDER子句,它們(可能)在這里無關緊要。
fornecedores.nome_emp AS nome_fornecedor, exchange_rates1.rate AS rateEUR_USD,
exchange_rates2.rate AS rateEUR_AOA,
CASE produtos.moeda
WHEN 'AOA' THEN produtos.preco_custo / exchange_rates2.rate
WHEN 'EUR' THEN produtos.preco_custo
WHEN 'USD' THEN produtos.preco_custo / exchange_rates1.rate
END as prc,
CASE produtos.moeda
WHEN 'AOA' THEN produtos.preco_venda / exchange_rates2.rate
WHEN 'EUR' THEN produtos.preco_venda
WHEN 'USD' THEN produtos.preco_venda / exchange_rates1.rate
END as pvp
FROM produtos
LEFT JOIN fornecedores ON produtos.id_fornecedor = fornecedores.id_fornecedores
LEFT JOIN exchange_rates AS exchange_rates1 ON exchange_rates1.para = 'USD'
LEFT JOIN exchange_rates AS exchange_rates2 ON exchange_rates2.para = 'AOA'
$whereClause $orderClause
提前致謝
您缺少MySQL中的JOIN
。 您試圖獲得兩種不同的匯率(通過在同一張表中使用兩種不同的LEFT JOIN
),然后使用CASE
找出要使用的匯率。
相反,只加入您實際需要的價格! 然后,您根本不需要任何條件邏輯。
fornecedores.nome_emp AS nome_fornecedor, exchange_rates.rate, produtos.preco_custo / exchange_rates.rate
FROM produtos
LEFT JOIN exchange_rates ON exchange_rates.para = produtos.moeda
假設在exchange_rates
有一行EUR
的匯率設置為1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.