0
エイリアスを計算に使用したいのですが、これは正しい方法ではありません。 [OK]をので、私の元のコードは、この複数行のないmysqlの計算でエイリアスを使用する方法
SELECT ROUND(SUM((`Unit_Cost`*`Quantity`)*`ExchangeRate`),2) as Cost,
ROUND(SUM(`Unit_Cost`*`Quantity`)*`ExchangeRate`/`salesinvoice_products`.`VAT`,2) as `VATValue`
FROM `salesinvoice`
LEFT JOIN `customers`
ON `salesinvoice`.`customer_id` = `customers`.`customer_id`
LEFT JOIN `salesinvoice_products`
ON `salesinvoice`.`SalesInvoice_id` = `salesinvoice_products`.`SalesInvoice_id`
WHERE `PaymentTerms` > 1
GROUP BY `salesinvoice`.`SalesInvoice_id`
ORDER BY `DateEntered` DESC
だったしかし、私はコストにVATValue
を追加したいです。明らかに私がちょうど+ VATValue
をすれば、それはVATValue
が存在しないと言うだろうが、それはエイリアスを読み取る方法です。だから私は答えであるサブクエリを考えてこれを試しました。サブクエリは、1行以上を返します - だからここ は、残念ながら、今回はそれがエラー#1242を与えるサブクエリ
SELECT ROUND(SUM((`Unit_Cost`*`Quantity`)*`ExchangeRate`),2) as Cost,
(
SELECT ROUND(SUM(`Unit_Cost`*`Quantity`)*`ExchangeRate`/`salesinvoice_products`.`VAT`,2)
FROM `salesinvoice`
) as tVAT
FROM `salesinvoice`
LEFT JOIN `customers`
ON `salesinvoice`.`customer_id` = `customers`.`customer_id`
LEFT JOIN `salesinvoice_products`
ON `salesinvoice`.`SalesInvoice_id` = `salesinvoice_products`.`SalesInvoice_id`
WHERE `PaymentTerms` > 1
GROUP BY `salesinvoice`.`SalesInvoice_id`
ORDER BY `DateEntered` DESC
と私のコードです。私は最初にエイリアスを追加していないことを知っていますが、まずサブセレクトが正しく動作することを確認しています。明らかにそうではありません。
サブクエリにwhere句が必要な場合がありますが、わかりません。
誰でも私が間違っていることを教えてもらえますか?代わりに、私は次の操作を行うだろうとサブクエリの