Sou um iniciante em SQLite e ainda não estou familiarizado com a junção de tabelas (e as limitações disso). Gostaria de saber como unir 2 tabelas para que os dados da coluna na Tabela B (várias colunas) mudem para refletir os dados da Tabela 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
);
Como faço para escrever uma consulta para que a tabela resultante mostre as colunas "company_name", "contact_one", "contact_two" e "contact_three" MAS com as tabelas de contato mostrando o nome do contato em vez do número inteiro (como apareceria na Tabela B) .
Veja abaixo uma imagem que representa as Tabelas A e B e a saída desejada da consulta SQLite:
Quando faço uma junção à esquerda, a consulta é bem-sucedida apenas para uma única coluna de contato.
SELECT B.company_name, A.person_name
FROM B
LEFT JOIN A ON B.contact_one = A.person_id
Tentei adicionar um "OU" à consulta (sei que "E" não funcionará), mas recebo um erro "nome de coluna ambíguo: A.nome_pessoal" quando tento executar a consulta:
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
Como escrevo a consulta para que possa obter contact_two e contact_three também na tabela resultante, com todos os três nomes de contatos exibidos?
Qualquer orientação será muito apreciada!
Você precisa se juntar à mesa A 3 vezes assim:
SELECT B.company_name,
a1.person_name name1,
a2.person_name name2,
a3.person_name name3
FROM B
LEFT JOIN A a1 ON B.contact_one = a1.person_id
LEFT JOIN A a2 ON B.contact_two = a2.person_id
LEFT JOIN A a3 ON B.contact_three = a3.person_id
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras