Pergunte aqui
0

Base SQL ? Incluir informações adicionais em registros duplicados

perguntadas 2016-01-21 20:12:40 +0200

esta mensagem está marcada como wiki comunitário

Esta mensagem é um wiki. Qualquer pessoa com karma >75 é bem-vinda para a melhorar.

Tenho acesso a um banco de dados, cujos números de notificação vem se repetindo, para pessoas diferentes! Não adianta dizer que preciso criar chave primária, tudo resolvido, etc, visto que o banco é "fechado" e, não existe disposição para torná-lo acessível. Assim, recebo um arquivo em dbf, transformo em ods, importo para um banco do Base (odb) e, comecei a criar as consultas e relatórios que preciso! Situação :

  1. Criei uma consulta simples, agrupando o número da notificação (muitas duplicações) e pedindo para contar. Encontrei notificações com 2, 3 e 4 registros, para alguns números!
  2. Gostaria de poder acrescentar outros campos, tipo CAMPOUM, CAMPODOIS, CAMPOTRES, etc, lembrando que apenas o campo NOTIF está duplicado.
  3. Não obtive sucesso com SELECT NOTIF, CAMPOUM, CAMPODOIS, CAMPOTRES FROM "BANCO" WHERE NOTIF=NOTIF
  4. Também como acrescentar um CAMPOQUATRO, do banco "ABCD", devidamente relacionado ?

Agradeço a ajuda! Newton Curitiba - PR

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

2 Respostas

0

respondidas 2016-01-29 13:12:58 +0200

imagem do gravatar de Grafeno

Olá,


Para seu caso é preciso usar uma subconsulta, ou seja, uma consulta dentro de outra:

SELECT "Banco"."NOTIF",
       "Banco"."CAMPOUM",
       "Banco"."CAMPODOIS",
       "Banco"."CAMPOTRES",
       "ABCD"."CAMPOQUATRO"
FROM "Banco",
     "ABCD"
WHERE "ABCD"."NOTIF" = "Banco"."NOTIF"
  AND "Banco"."NOTIF" IN
    (SELECT "Banco"."NOTIF"
     FROM "Banco"
     GROUP BY "Banco"."NOTIF"
     HAVING COUNT(*) > 1)
  • A subconsulta (SELECT "Banco"."NOTIF" FROM "Banco" GROUP BY "Banco"."NOTIF" HAVING COUNT( * ) > 1) devolve as notificações repetidas e permite que a consulta externa (maior) retorne os demais campos de informações de cada uma destas notificações.
  • Como você não informou em qual campo se dá a relação entre as tabelas "ABCD" e "Banco", considerei o campo NOTIF: WHERE "ABCD"."NOTIF" = "Banco"."NOTIF".

DETALHE IMPORTANTE: Esta consulta deve ser inserida no Editor de SQL do LibO Base através da opção "Criar consulta no editor de SQL...". O Editor de Consulta muitas vezes não consegue interpretar subconsultas e ao invés de rodá-las devolve alertas de "Erros de sintaxe".


Atte,
Grafeno

editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2016-01-21 20:12:40 +0200

Lidas: 131 vezes

Última atualização: Jan 29 '16