Вставка нескольких внешних ключей с псевдонимами

Я пытаюсь вставить идентификаторы во внешние ключи. Вот мой код:

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
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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)
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
  1. INSERT INTO
  2. WITH пункт
  3. SELECT из таблицы(-ов) из пункта WITH

Спасибо за ответ. Как я могу вставить несколько псевдонимов?

onurcano 09.04.2023 04:36

@onurcano, добро пожаловать! Приведите пример, чтобы лучше понять, чего вы хотите достичь

Aksen P 09.04.2023 04:38

Я имею в виду, что с id.place все в порядке. А как насчет id_source_by, id_compiled_by, id_notation_by и id_type? Это разные таблицы. Я попытался добавить предложения «с», но получил ошибку.

onurcano 09.04.2023 04:40

@onurcano, вы можете проверить это ВЫБЕРИТЕ. Для этого вам нужно подготовить сложный SELECT оператор с множеством подзапросов (таблицы в WITH предложении) и выполнить правильные JOINs. Понятно? Приготовьте SELECT то, что хотите INSERT. Сделай это, и ты достигнешь цели.

Aksen P 09.04.2023 04:46

@onurcano, твое обновление странное. Имейте в виду, что у SELECT есть строки, где данные хранятся в одной (нескольких) строках, и эти значения будут вставляться построчно. Вам необходимо подготовить эти строки данных. Ваше обновление не следует этой логике...

Aksen P 09.04.2023 04:49

Давайте продолжим обсуждение в чате.

Aksen P 09.04.2023 04:50

Другие вопросы по теме