У меня есть БД с тремя таблицами, где одна представляет собой таблицу соединений, содержащую ссылки на внешние ключи для двух других таблиц. У меня возникли проблемы с пониманием, как сделать INSERT
заявление в таблице соединения условном на соответствующие строки, существующие в двух других таблиц, следующим образом:SQLite: CASE с EXISTS на INSERT
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)
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
с подходящим номером и префиксом курса И строка в schoolB_courses
с соответствующим номером курса и префиксом (для предотвращения вставок эквивалентности, где либо курс школы, курс школы, либо оба не существуют)?
Я попытался положить вместе саз, но ТАК не позволю мне разместить его (я получаю родовую «возникла проблема» сообщение, когда я пытаюсь включить его в этом вопросе)
Спасибо! Не знал о другой форме 'SELECT', поскольку я довольно новичок в SQL - я прочитаю об этом. – Marcatectura