Я пытаюсь вставить идентификаторы во внешние ключи. Вот мой код:
WITH p AS (SELECT id FROM tbl_place WHERE txt_place = "Place 1")
INSERT INTO tbl_sheet(txt_rep_no, txt_song_name, id_place, id_source_by, id_compiled_by, id_notation_by, id_type, blob_sheet1)
VALUES("1", "Song Name 1", p.id, 1, 1, 1, "", "")
Это дает мне ошибку
Нет такого p.id столбца
Как я могу выбрать и вставить несколько внешних ключей?
Редактировать: Я попытался добавить предложения «с», но получил ошибку: «С»: синтаксическая ошибка
INSERT INTO tbl_sheet(txt_rep_no, txt_song_name, id_place, id_source_by, id_compiled_by, id_notation_by, id_type, blob_sheet1)
WITH p AS (SELECT id FROM tbl_place WHERE txt_place = "Place 1")
WITH s AS (SELECT id FROM tbl_person WHERE txt_person = "Person 1")
WITH c AS (SELECT id FROM tbl_person WHERE txt_person = "Person 1")
WITH n AS (SELECT id FROM tbl_person WHERE txt_person = "Person 1")
SELECT "1", "Song 1", p.id, s.id, c.id, n.id, 1, ""
FROM p
Это потому, что вы используете его в неправильном порядке:
INSERT INTO tbl_sheet(txt_rep_no, txt_song_name, id_place, id_source_by, id_compiled_by, id_notation_by, id_type, blob_sheet1)
WITH p AS (SELECT id FROM tbl_place WHERE txt_place = "Place 1")
SELECT "1", "Song Name 1", p.id, 1, 1, 1, "", ""
FROM p
INSERT INTO
WITH
пунктSELECT
из таблицы(-ов) из пункта WITH
@onurcano, добро пожаловать! Приведите пример, чтобы лучше понять, чего вы хотите достичь
Я имею в виду, что с id.place все в порядке. А как насчет id_source_by, id_compiled_by, id_notation_by и id_type? Это разные таблицы. Я попытался добавить предложения «с», но получил ошибку.
@onurcano, вы можете проверить это ВЫБЕРИТЕ. Для этого вам нужно подготовить сложный SELECT
оператор с множеством подзапросов (таблицы в WITH
предложении) и выполнить правильные JOIN
s. Понятно? Приготовьте SELECT
то, что хотите INSERT
. Сделай это, и ты достигнешь цели.
@onurcano, твое обновление странное. Имейте в виду, что у SELECT
есть строки, где данные хранятся в одной (нескольких) строках, и эти значения будут вставляться построчно. Вам необходимо подготовить эти строки данных. Ваше обновление не следует этой логике...
Давайте продолжим обсуждение в чате.
Спасибо за ответ. Как я могу вставить несколько псевдонимов?