Junte duas tabelas para que os dados da coluna de chave estrangeira (inteiro) sejam alterados para os dados de texto da tabela pai (a coluna em questão na tabela pai não é a chave primária)

RK3110

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:

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!

forpas

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.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo