2011-08-12 23 views
7

この小さな問題で私を助けてくれることを願っています。SELECTとINNER JOINのSQL INSERT INTO

私はあなたに状況を説明する方法についてはあまりよくわからないので、それを試してみてください。私がやろうとしています何

は次のとおりです。

私は基本的に、テーブルRFC_Risksに(私は自分自身で入力します)いくつかの特定の値やパラメータを挿入するために、私は内部の具体的な理由を見つけるたびにしたいですテーブルRCF_Risks、RfCの優先度を更新する新しい行を書きたいと思います。毎回、位置が1ずつ増えます。

私はこの文を実行すると、 SELECT部分​​:-)、挿入されていない、どちらもSQL文のエラーなどは出ません。私はパラメータを入力するだけで、私はSELECTテーブルthatsすべてを取得します。

私はMS Access 2010を使用しています。あなたが私の「少し」の問題で私を助けてくれることを願っています。

INSERT INTO RFC_Risks (RFC_No, RiskPos, Datum, Comments, RiskPrio, Reason) 
SELECT RFC_Risks.RFC_No, (RFC_Risks.RiskPos +1) AS RiskPos, [Aktuelles Datum] AS Datum, [Kommentartext] AS Comments, [Neue Prio] AS RiskPrio, RFC_Risks.Reason 
FROM RFC_Risks INNER JOIN Risk_Reasons ON RFC_Risks.Reason = Risk_Reasons.Reasontext 
WHERE RFC_Risks.Reason = Risk_Reasons.Reasontext;
+1

最後にWHERE句が必要ではないと思いますが、あなたのINNER JOINはあなたのためです=) – jadarnel27

+0

あなたはどんなエラーや予期しない結果を得ていますか?これは私にはいいようです.. – Yuck

+0

@Yuck彼らは、レコードがRFC_Risksに挿入されていないという予期せぬ結果のように聞こえます( 'SELECT'部分のみが実行されます) – jadarnel27

答えて

1

括弧で囲んでください。

+1

私の答えはおそらくコメントとして良くなりました答えはありませんが、私はまだ質問にコメントすることはできませんし、SQLはわかりやすく見えます。私が知る限り、副選択は常に括弧で囲まなければならないので、それはあなたのために働くかもしれないと思います。それが解決策でない場合は確かに返信してください。 – taz

+0

だから、私は選択の前に括弧を入れなければならないのですか? (RFC_No、RiskPos、Datum、Comments、Risk_Prio、理由)(SELECT RFC_Risks.RFC_No、(RFC_Risks.RiskPos +1)ASリスクポス、[Aktuelles Datum] ASデータム、[Kommentartext] ASコメント、[Neue Prio] AS Risk_Prio、RFC_Risks.Reason FROM Risk_Reasons INNER JOIN RFC_Risks ON Risk_Reasons。Reasontext = RFC_Risks.Reason); – sXing

3

SQL文の実行を妨げたり、エラーをスローしたりするSQLステートメントについては、何も発見できません。 (私はあなたのWHERE句が冗長だと思っていますが、それはdbエンジンに拒否させるべきではありません。)どのメソッドを使って "実行"していますか?

アクセスクエリデザイナを使用し、デザインビューからデータシートビューに切り替えると、クエリは実際には実行されません。データシートビューでは、クエリが実行された場合に影響を受ける行が表示されます。

クエリデザイナで削除クエリを作成していた場合と同じです...データシートビューでは、削除する行が表示されますクエリが実行されたがデータシートビューに切り替えても削除されませんそれらの行

を実行するには、赤い感嘆符が付いたアイコンをクリックします。

+0

この情報はありがとうございます。tbhデータシートや他の方法でクエリを実行する際に違いがあることを知りませんでした。私はそれを試してみます。 – sXing

0

クエリを実行する必要があります。データシートビューでのみ表示すると、SELECTステートメントが実行され、一種のプレビューとして表示されます。

実際にクエリを実行するには、デザインモードでツールバーの[実行]ボタン(赤い感嘆符)をクリックします。データベースウィンドウでクエリをダブルクリックすることもできます。

+0

私はそれを試してくれてありがとう、そして今私がパラメータを入力した後、私はエラーが発生します。 なぜこれが起こるのか完全にはわからないが、RFC_RisksはRFC番号とRiskPositionという2つの主キーを持っている。何か案は? – sXing

+0

@sXing、主キーのsames値を持つ新しいレコードを、すでにテーブルにあるレコードとして挿入しようとしている可能性があります(2つ以上のレコードを主キーのsames値とともに追加することもできます) )。 –