Я новичок в SQLite, и я все еще немного незнаком с объединением таблиц (и ограничениями в них). Я хотел бы знать, как объединить 2 таблицы, чтобы данные столбца в таблице B (несколько столбцов) изменились, чтобы отразить данные из таблицы A.
CREATE TABLE "A" (
"person_id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"person_name" TEXT NOT NULL,
"email" TEXT NOT NULL
);
CREATE TABLE "B" (
"company_id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"company_name" TEXT NOT NULL,
"contact_one" INTEGER NOT NULL,
"contact_two" INTEGER,
"contact_three" INTEGER,
FOREIGN KEY("contact_one") REFERENCES "A"("person_id") ON DELETE SET NULL
FOREIGN KEY("contact_two") REFERENCES "A"("person_id") ON DELETE SET NULL
FOREIGN KEY("contact_three") REFERENCES "A"("person_id") ON DELETE SET NULL
);
Как мне написать запрос так, чтобы получилась таблица показывает столбцы "company_name", "contact_one", "contact_two" и "contact_three", НО с таблицами контактов, показывающими имя контакта, а не целое число (как оно будет отображаться в таблице B).
См. изображение ниже представляющие таблицы A и B и желаемый результат запроса SQLite:
Когда я выполняю левое соединение, запрос успешно выполняется только для одного столбца контакта.
SELECT B.company_name, A.person_name
FROM B
LEFT JOIN A ON B.contact_one = A.person_id
Я попытался добавить «ИЛИ» к запросу (я знаю, «И» не будет работать), но я получаю ошибку «неоднозначное имя столбца: A.person_name» при попытке запустить запрос:
SELECT B.company_name, A.person_name
FROM B
LEFT JOIN A ON B.contact_one = A.person_id
OR LEFT JOIN A ON B.contact_two = A.person_id
OR LEFT JOIN A ON B.contact_three = A.person_id
Как мне написать запрос, чтобы я мог получить contact_two и contact_three также в итоговой таблице с отображением имен всех трех контактов?
Любое руководство будет с благодарностью!