2016-07-12 8 views
-1

enter image description hereMS AccessとSQLは:合計する方法10+の出力は

を追加しましたエラーメッセージ

照会私は、それぞれの値を計算する19個のクエリを持っています。私は今これらの値をすべて追加したいと思っています。

これは、私は十分なスペースがないというエラーが出る巨大なクエリ

SELECT qryNewAluminumMaterialCostPerUnit.NewAluminumMaterialCost + qryNewChromeMaterialCostPerUnit.NewChromeMaterialCost + qryNewCobaltMaterialCostPerUnit.NewCobaltMaterialCost + qryNewCopperMaterialCostPerUnit.NewCopperMaterialCost + qryNewCRSBenchmarkerEofMSMaterialCostPerUnit.NewCRSBenchmarkerEofMSMaterialCost + qryNewCrudeOilMaterialCostPerUnit.NewCrudeOilMaterialCost + qryNewIronScrap1ChicagoBushMaterialCostPerUnit.NewIronScrap1ChicagoBushMaterialCost + qryNewMWAluminumMaterialCostPerUnit.NewMWAluminumMaterialCost + qryNewNaturalGasMaterialCostPerUnit.NewNaturalGasMaterialCost + qryNewNickelMaterialCostPerUnit.NewNickelMaterialCost + qryNewOilMaterialCostPerUnit.NewOilMaterialCost + qryNewOtherMaterialCostPerUnit.NewOtherMaterialCost + qryNewPlastic1MaterialCostPerUnit.NewPlastic1MaterialCost + qryNewPlastic2MaterialCostPerUnit.NewPlastic2MaterialCost + qryNewPlastic3MaterialCostPerUnit.NewPlastic3MaterialCost + qryNewSilverMaterialCostPerUnit.NewSilverMaterialCost + qryNewTheoretical301MaterialCostPerUnit.NewTheoretical301MaterialCost + qryNewTheoretical304MaterialCostPerUnit.NewTheoretical304MaterialCost + qryNewZincMaterialCostPerUnit.NewZincMaterialCost 
FROM qryNewAluminumMaterialCostPerUnit, qryNewChromeMaterialCostPerUnit, qryNewCobaltMaterialCostPerUnit, qryNewCopperMaterialCostPerUnit, qryNewCRSBenchmarkerEofMSMaterialCostPerUnit, qryNewCrudeOilMaterialCostPerUnit, qryNewIronScrap1ChicagoBushMaterialCostPerUnit, qryNewMWAluminumMaterialCostPerUnit, qryNewNaturalGasMaterialCostPerUnit, qryNewNickelMaterialCostPerUnit, qryNewOilMaterialCostPerUnit, qryNewOtherMaterialCostPerUnit, qryNewPlastic1MaterialCostPerUnit, qryNewPlastic2MaterialCostPerUnit, qryNewPlastic3MaterialCostPerUnit, qryNewSilverMaterialCostPerUnit, qryNewTheoretical301MaterialCostPerUnit, qryNewTheoretical304MaterialCostPerUnit, qryNewZincMaterialCostPerUnit; 

です。上記の形式よりもすべてのクエリの出力を追加する簡単な方法はありますか?

NOte:すべてのクエリは、1つの単一レコード、単一の値を返します。

+0

エラーメッセージはかなり簡単です。 SELECT句の1つの式は1173文字です。しかし、おそらく、SQLビューで動作します。 – Andre

答えて

2
SELECT q1 + q2 + q3 + .... q19 
FROM q1, q2, q3, ... q19 

各クエリが1つのレコードを返す場合、これは正常に動作するはずです。それがなければ、あなたはすべてのテーブルのCartesian productを取得しています...心拍でラムを埋める。あなたのクエリが多くのレコードと多くのフィールドを持っている場合、これは最初から始めるのは理にかなっていません。

おそらく、あなたの検索結果に結合するか、結果セットを結合して合計します。次のようなものがあります。

SELECT sum(f1) 
    FROM 
     (
      SELECT f1 FROM q1 
      UNION ALL 
      SELECT f1 FROM q2 
      UNION ALL 
      SELECT f1 FROM q3 
     )as unionSubQuery 
+0

私はあなたが見ることができるように実際のコードをアップロードしました。私は最初のコードを閉じてアクセスを開いた後にもう一度試してみましたが、奇妙なことに、今度はこれが動作します。私は私が得たエラーを示したかった。つまり、私が使った最初のコードと提案した最初のコードが動作します。 –

+1

私はアクセスが結合のために非常に大きな中間のデカルト結果セットを引き起こすいくつかの奇妙な実行プランを実行しているのだろうかと思います。私の推測では、オープニングとクローズでは、奇妙な実行パスが鳴り響くのに十分なラムがクリアされているということです。 ProcessXPなどのツールを使用して実行中のラムの使用状況を見ることは興味深いでしょう。 – JNevill

1

各クエリの出力列を指定する必要があります。各クエリで短いエイリアスを使用することをお勧めします。例えば。

SELECT q1.Val1 + q2.Val2 + q3.Val3 + .... q19.Val19 
FROM q1, q2, q3, ... q19 

各クエリが正確に1つの行を返す場合、これは原則的に機能するはずです。

待機...「十分な空きがありません」とは、(一時的な)ディスク領域が不足していることを意味しますか?

はいの場合、最も簡単な方法は、クエリをループし、各値を読み取り、それらを加算するVBA関数を書くことです。このように、Accessは一度にすべてのクエリを実行する必要はありません。

+0

各クエリは1行を返しますので、提供したコードも正しいです。 –

+0

しかし、列名が必要です。 :)おそらく後でクエリを実行すると、おそらくその前に他のものを実行した後でエラーが返ってくることに注意してください。正確なエラーメッセージは何でしたか? – Andre

+0

エラーメッセージを追加しました。私は列名を含めました。 –

関連する問題