2017-03-02 5 views
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句が必要な場合がありますが、わかりません。

誰でも私が間違っていることを教えてもらえますか?代わりに、私は次の操作を行うだろうとサブクエリの

答えて

1

SELECT `Cost`, `VATValue`, (`VATValue`+`Cost`) as CostAndVAT 
FROM 
(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) a 
関連する問題