0

以下のスクリプトは、内部クエリでエラーをスローしています。Sequel Proを使用していますが、次のエラーのみが発生します。

SQL構文にエラーがあります。2行目の「SELECTSavingsFROMOfferSuggestionHeader osh LEFT JOIN Projects p ON osh.OfferI」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

ですから、実際の問題が何であるかはわかりません。pエイリアスが適切に参照/解釈されていない場合などに備えて、内部クエリ内で明示的な内部結合を実行しようとしましたが、プラスの効果はありませんでした。

SELECT SUM(osh.Savings) as YTD, 
   SUM (SELECT Savings
FROM OfferSuggestionHeader osh
LEFT JOIN Projects p
ON osh.OfferID = p.offer_id
WHERE p.uid = 1 AND p.current_status < 3) 
   AS "Open Savings"
FROM OfferSuggestionHeader osh
LEFT JOIN Projects p
    ON p.offer_id = osh.OfferID
WHERE p.uid = '1'

どんな助けでも大歓迎です。一番、

4

4 に答える 4

1

合計を作成することはできません(...を選択してください)。

これを試して

 SELECT SUM(osh.Savings) as YTD, 
       (SELECT SUM(Savings)
       FROM OfferSuggestionHeader osh
       LEFT JOIN Projects p
       ON osh.OfferID = p.offer_id
       WHERE p.uid = 1 AND p.current_status < 3) 
 AS "Open Savings"
 FROM OfferSuggestionHeader osh
 LEFT JOIN Projects p
 ON p.offer_id = osh.OfferID
 WHERE p.uid = '1'
于 2013-02-26T18:37:24.310 に答える
1

このように単純化できるようCASEです:

SELECT SUM(osh.Savings) as YTD, 
   SUM (CASE WHEN p.current_status < 3 THEN Savings ELSE 0 END) AS "Open Savings"
FROM OfferSuggestionHeader osh
    INNER JOIN Projects p
        ON osh.OfferID = p.offer_id
WHERE p.uid = 1

また、結果をp.uid = 1に制限しているため、`LEFTJOINは必要ありません。

于 2013-02-26T18:38:20.767 に答える
1

問題は、SELECTに対してSUMを実行していて、その逆ではないことです。これは機能するはずです:

SELECT SUM(osh.Savings) as YTD, 
    (SELECT SUM(Savings)
FROM OfferSuggestionHeader osh
LEFT JOIN Projects p
ON osh.OfferID = p.offer_id
WHERE p.uid = 1 AND p.current_status < 3) 
   AS "Open Savings"
FROM OfferSuggestionHeader osh
LEFT JOIN Projects p
    ON p.offer_id = osh.OfferID
WHERE p.uid = '1'
于 2013-02-26T18:39:11.573 に答える
1

クエリはもっと​​簡単に次のように書くことができると思います。

SELECT SUM(osh.Savings) as YTD,
       SUM(case when p.current_status < 3 then Savings end) AS "Open Savings"
FROM OfferSuggestionHeader osh LEFT JOIN
     Projects p
     ON p.offer_id = osh.OfferID
WHERE p.uid = '1'

つまり、サブクエリを完全に条件付き合計に置き換えることができます。

于 2013-02-26T18:41:39.650 に答える