consulta simultânea em duas tabelas iguais

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

consulta simultânea em duas tabelas iguais

Mensagem por cjp »

Pessoal, estou testando fazer consulta simultânea em duas tabelas iguais. Pela pesquisa que fiz na internet, seria pra fazer algo assim:

Código: Selecionar todos

SELECT tarefas.prioridade,tarefas.nrtarefa,tarefas.assunto,tarefas.tarefa,procsol.prioridade,procsol.nrtarefa,procsol.assunto,procsol.tarefa FROM tarefas,procsol WHERE tarefas.assunto like '%trem%' OR procsol.assunto like '%trem%'
Entretanto, essa consultar está retornando milhares de registros repetidos, demorando demais.

Além disso, ela retorna os campos duplicados.

Eu queria que retornasse só um resultado, com os registros de ambas as tabelas, sem duplicações de campos nem de registros, como se a consulta fosse em uma só tabela.

Ressalto que as duas tabelas são exatamente iguais, com exatamente os mesmos campos, só o conteúdo dos registros é diferente.

Alguém poderia me ajudar?
Inacio de Carvalho Neto
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

consulta simultânea em duas tabelas iguais

Mensagem por janio »

Nao entendi o que vc quer.

Se vc tem duas tabelas e vc esta fazendo uma consulta nas duas, virá os dados das duas mesmo!

A não ser que vc tenha um CAMPO UNICO nas duas que faça a ligação entre elas, aí vc relaciona uma a outra
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

consulta simultânea em duas tabelas iguais

Mensagem por cjp »

Eu quero os dados das duas mesmo. Mas juntos.

Não tem dados repetidos nas duas tabelas, os dados são diferentes.

Da forma como está o select, ele abre duas vezes cada Campo, eu queria que abrisse uma vez só.

Além disso, não sei porque, cada registro está repetido varias vezes.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

consulta simultânea em duas tabelas iguais

Mensagem por JoséQuintas »

Se vém repetido é porque ainda tem repetido, e isso também torna a consulta mais lenta.
Também a consulta, sem nenhum campo-chave no where (campo que não conste em índice) também fica lenta, porque o MySQL vai acabar tendo que criar um índice temporário para a consulta.

Se não quer dados repetidos, use SELECT DISTINCT

Isso apenas vai eliminar os repetidos na consulta, mas não vai resolver o problema de repetidos na(s) tabela(s).

Importante:
Não está fazendo consulta em duas tabelas.
Está fazendo consulta em UMA TABELA relacionada com a outra, deixando por conta do MySql decidir como relacionar as duas.

Importante 2:
O problema de duplicação não vai se resolver sozinho.
Precisa até fazer a limpeza pra saber se tem outras partes do aplicativo duplicando informações.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

consulta simultânea em duas tabelas iguais

Mensagem por cjp »

Não sei se vc está falando daquela minha outra tabela que te falei particularmente que tinha registros duplicados, mas aqui não é o caso. Estas duas tabelas não têm registros duplicados em hipótese alguma.

As tabelas têm índice.
Não está fazendo consulta em duas tabelas.
Se não é assim que faço a consulta nas duas tabelas, como seria, por favor?

Eu queria algo simples: no exemplo inicial, queria todos os registros que tiverem a palavra "trem" no campo assunto das duas tabelas, formando um único resultado conjunto para as duas tabelas. Então, o resultado poderia ser algo assim:

Código: Selecionar todos

prioridade      nrtarefa      assunto       tarefa       
9               X123          trem de pouso   xxxxxxxxxxxxxxxxxx
8               Y456          viagem de trem   yyyyyyyyyyyyyyyyyy
Sendo que o primeiro registro está em uma das tabelas e o segundo em outra.

Entretanto, ele está retornando assim:

Código: Selecionar todos

prioridade    nrtarefa      assunto        tarefa         prioridade        nrtarefa       assunto        tarefa
9             X123        trem de pouso   xxxxxxxxxxx      9        X123         trem de pouso     xxxxxxxxxxxx
8             Y456        viagem de trem   yyyyyyyyyyy      8         Y456        viagem de trem     yyyyyyyyyyyy
9             X123        trem de pouso   xxxxxxxxxxx      9        X123         trem de pouso     xxxxxxxxxxxx
8             Y456        viagem de trem   yyyyyyyyyyy      8         Y456        viagem de trem     yyyyyyyyyyyy
9             X123        trem de pouso   xxxxxxxxxxx      9        X123         trem de pouso     xxxxxxxxxxxx
8             Y456        viagem de trem   yyyyyyyyyyy      8         Y456        viagem de trem     yyyyyyyyyyyy
9             X123        trem de pouso   xxxxxxxxxxx      9        X123         trem de pouso     xxxxxxxxxxxx
8             Y456        viagem de trem   yyyyyyyyyyy      8         Y456        viagem de trem     yyyyyyyyyyyy
9             X123        trem de pouso   xxxxxxxxxxx      9        X123         trem de pouso     xxxxxxxxxxxx
8             Y456        viagem de trem   yyyyyyyyyyy      8         Y456        viagem de trem     yyyyyyyyyyyy
9             X123        trem de pouso   xxxxxxxxxxx      9        X123         trem de pouso     xxxxxxxxxxxx
8             Y456        viagem de trem   yyyyyyyyyyy      8         Y456        viagem de trem     yyyyyyyyyyyy
9             X123        trem de pouso   xxxxxxxxxxx      9        X123         trem de pouso     xxxxxxxxxxxx
8             Y456        viagem de trem   yyyyyyyyyyy      8         Y456        viagem de trem     yyyyyyyyyyyy
9             X123        trem de pouso   xxxxxxxxxxx      9        X123         trem de pouso     xxxxxxxxxxxx
8             Y456        viagem de trem   yyyyyyyyyyy      8         Y456        viagem de trem     yyyyyyyyyyyy
9             X123        trem de pouso   xxxxxxxxxxx      9        X123         trem de pouso     xxxxxxxxxxxx
8             Y456        viagem de trem   yyyyyyyyyyy      8         Y456        viagem de trem     yyyyyyyyyyyy
Inacio de Carvalho Neto
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

consulta simultânea em duas tabelas iguais

Mensagem por janio »

Tente

Código: Selecionar todos

SELECT
	tarefas.prioridade as Prioridade
	tarefas.nrtarefa   as NumeroTarefa
	tarefas.assunto    as Assunto
	tarefas.tarefa     as Tarefa
FROM
	tarefas
WHERE
	tarefas.assunto like '%trem%'
UNION ALL
SELECT
	procsol.prioridade  as Prioridade
	procsol.nrtarefa    as NumeroTarefa
	procsol.assunto     as Assunto
	procsol.tarefa      as Tarefa
FROM
   procsol
WHERE
	procsol.assunto like '%trem%'
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

consulta simultânea em duas tabelas iguais

Mensagem por JoséQuintas »

Código: Selecionar todos

select cpuf,cpcidade, cpcep from WEBCEP where cpcep='01007-000'
union all
select cpuf,cpcidade,cpcep from WEBCEP where cpcep='03676-080'
sqlcep.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

consulta simultânea em duas tabelas iguais

Mensagem por cjp »

Era exatamente isso que eu queria, muito obrigado.
Inacio de Carvalho Neto
Responder