私は3つのテーブルを持つDBを持っています.1つは、他の2つのテーブルへの外部キー参照を含むジャンクションテーブルです。SQLite:INSERTでEXISTSを使用するケース
schoolB_courses:
id INTEGER PRIMARY KEY AUTOINCREMENT,
course_prefix TEXT,
course_number INTEGER,
course_title TEXT,
course_credits INTEGER,
course_requisites TEXT,
course_notes TEXT,
course_description TEXT,
course_url TEXT)
schoolA_courses:
id INTEGER PRIMARY KEY AUTOINCREMENT,
course_prefix TEXT,
course_number INTEGER,
course_title TEXT,
course_credits INTEGER,
course_requisites TEXT,
course_notes TEXT,
course_description TEXT)
を次のように私は、他の2つの表に既存の行に一致することを条件ジャンクションテーブルに
INSERT
文を作成する方法を理解するトラブルを抱えています
schoolB_equivalencies:
equivalency_id INTEGER PRIMARY KEY AUTOINCREMENT,
schoolA_id INTEGER NOT NULL,
schoolB_id INTEGER NOT NULL,
is_archived INTEGER NOT NULL,
FOREIGN KEY (schoolA_id) REFERENCES schoolA_courses (id),
FOREIGN KEY (schoolB_id) REFERENCES schoolB_courses (id))
はschoolA.course_prefix
、schoolA.course_number
、schoolB.course_prefix
、およびschoolB.course_number
のためのユーザの入力を考えると、私はschoolB_equivalencies
テーブルへの挿入を実行する方法を理解する:
INSERT INTO schoolB_equivalencies (schoolA_id, schoolB_id, is_archived)
VALUES ((SELECT id from schoolA_courses WHERE course_number=? AND course_prefix=?),
(SELECT id from schoolB_courses WHERE course_number=? AND course_prefix=?),0)
しかしがある場合にどのように私はこれだけINSERT
のみを行うことができschoolA_courses
の行と一致するコース番号と接頭辞、AND schoolB_courses
の行と一致するコース番号と接頭辞(学校Aコース、学校Bコース、またはその両方が存在しない場合の等価性の挿入を防止する)?
私は一緒にCASE文を入れて試してみたが、SO私はそれを投稿することができません(私はこの質問に含めるしようとすると、一般的なメッセージを「問題が発生しました」取得)
ありがとうございました!私はSQLにかなり新しいので、 'SELECT'の他の形式を意識していませんでした - 私はそれを読み上げます。 – Marcatectura