php - 这个 MySQL CASE SELECT 有更好的方法吗?

标签 php mysql select left-join case

最后两个参数是 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

提前致谢:D

最佳答案

您缺少 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

关于php - 这个 MySQL CASE SELECT 有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907239/

相关文章:

php - 将信息从外部源存储到数据库中?

mysql - 选择两组数据单独分组

javascript - Jquery填充多个具有相同名称的选择框

MySql-拆分单元格并插入到另一个表中

mysql - 从多个表中选择以获得单个随机行

php - Facebook API 注销我的应用程序但不是 facebook

PHP 从存储在 mySQL DB 中的数组中获取元素

php - $array[] = $value 或 array_push($array, $value) 在 PHP 中哪个更快?

mysql - 从 MySQL 中多个表的 max 列获取关联数据

PHPexcel批量插入mysql