1

「NodeForce」テーブルに新しい行を追加できる MS Access で次のコードを実行できます。

INSERT INTO [NodeForce] (nodeID, mem1, mem1min) 
SELECT '1113', '1752-1', [Row_ID] 
FROM [Element Forces - Frames] WHERE [FrameElem] = '1752-1' 
AND [OutputCase] = 'Case2' AND [ElemStation] = 0

ただし、次のようなサブクエリを 1 つ追加すると、次のようになります。

INSERT INTO [NodeForce] (nodeID, mem1, mem1min, mem1max) 
SELECT '1113', '1752-1', [Row_ID] 
FROM [Element Forces - Frames] WHERE [FrameElem] = '1752-1' 
AND [OutputCase] = 'Case2' AND [ElemStation] = 0,
[Row_ID] FROM [Element Forces - Frames] WHERE [FrameElem] = '1752-1' 
AND [OutputCase] = 'Case6' AND [ElemStation] = 12

「クエリ値の数と宛先フィールドが同じではありません」というエラーが生成されます。

異なるサブクエリを使用して複数の値を挿入するにはどうすればよいですか?

私も試しました:

INSERT INTO ...
VALUES ('1113', '1752-1', (SELECT ... FROM ...), (SELECT ... FROM ...))

「クエリ入力には少なくとも1つのテーブルまたはクエリが含まれている必要があります」というエラーが表示されました

よろしくお願いします。

4

1 に答える 1

1

クエリを分析する:

INSERT INTO [NodeForce] (nodeID, mem1, mem1min, mem1max) 
SELECT '1113', '1752-1', [Row_ID] 
FROM [Element Forces - Frames] WHERE [FrameElem] = '1752-1' 
AND [OutputCase] = 'Case2' AND [ElemStation] = 0

3 つの値を 4 つの列に挿入しているため、メッセージ"Number of query values and destination fields are not the same."

そして、以下のものは何もなくSELECT、最初のステートメントSELECTの後ではなく、3 つの値を持つステートメントの後です。[Row_ID]SELECT

,[Row_ID] FROM [Element Forces - Frames] WHERE [FrameElem] = '1752-1' 
AND [OutputCase] = 'Case6' AND [ElemStation] = 12

したがって、必要なことは、列の数を値と一致させることです。その場合、2 番目SELECTのクエリを最初のクエリの一部であるサブクエリにする必要があり、次のように 1 つの値のみを返すようにする必要があります。

INSERT INTO [NodeForce] (nodeID, mem1, mem1min, mem1max) 
SELECT '1113', '1752-1', [Row_ID], (SELECT
[Row_ID] FROM [Element Forces - Frames] WHERE [FrameElem] = '1752-1' 
AND [OutputCase] = 'Case6' AND [ElemStation] = 12 LIMIT 1) 
FROM [Element Forces - Frames] WHERE [FrameElem] = '1752-1' 
AND [OutputCase] = 'Case2' AND [ElemStation] = 0

どこ:

(SELECT
[Row_ID] FROM [Element Forces - Frames] WHERE [FrameElem] = '1752-1' 
AND [OutputCase] = 'Case6' AND [ElemStation] = 12 LIMIT 1)

は、mem1max1 つの値のみを返すサブクエリであり、4 の列数にも一致する 4 番目の値です。

于 2013-11-14T03:28:57.420 に答える