私がJavaを使用してやろうとしていることは、次のとおりです。
- データベースにアクセスする
- テーブル「Target_stats」からレコードを読み取ります
- フィールド「threat_level」=0の場合、doAction1
- フィールド「threat_level」>0の場合、別のテーブル「Attacker_stats」およびdoAction2から追加のフィールドを取得します
- 次のレコードを読む
これで必要なものはすべて揃いましたが、データベースを1回だけ通過できるようにするよく考えられたSQLステートメントです。これが機能しない場合は、2つの別々のSQLステートメントを使用して、データベースを2回目に通過する必要があると思われます。 。私はcaseステートメントを明確に理解していないので、ifステートメントを使用して疑似コードを提供します。
SELECT A.1, A.2, A.3
if(A.3 > 0){
SELECT A.1, A.2, A.3, B.1, B.3
FROM A
JOIN B
ON A.1 = B.1
}
FROM A
誰かが私の状況に光を当てることができますか?
編集:あなたの時間と努力の両方に感謝します。私はあなたの両方のコメントを理解しており、私はより正しい方向に向かっていると信じていますが、私はまだいくつかの問題を抱えています。以前はSQLfiddleについて知らなかったので、先に進んでサンプルDBを作成し、自分の目的を実証しようとしました。リンクは次のとおりです。http://sqlfiddle.com/# !3/ea108 / 1ここで実行したいのは、target_stats.server_id、target_stats.target、target_stats.threat_levelを選択することです。ここでinterval_id = 3であり、threat_level>0の場合取得したいattack_stats.attacker、attack_stats.sig_nameここでinterval_id=3。繰り返しになりますが、あなたの時間と努力に感謝しますそれは私にとって非常に役に立ちます
編集:いじくり回した後、私はそれを理解しました。手伝ってくれてどうもありがとう