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

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

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