Página 1 de 1

consulta simultânea em duas tabelas iguais

Enviado: 17 Nov 2017 19:21
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?

consulta simultânea em duas tabelas iguais

Enviado: 18 Nov 2017 10:37
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

consulta simultânea em duas tabelas iguais

Enviado: 18 Nov 2017 10:46
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.

consulta simultânea em duas tabelas iguais

Enviado: 18 Nov 2017 11:16
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.

consulta simultânea em duas tabelas iguais

Enviado: 21 Nov 2017 17:19
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

consulta simultânea em duas tabelas iguais

Enviado: 21 Nov 2017 20:13
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%'

consulta simultânea em duas tabelas iguais

Enviado: 21 Nov 2017 20:41
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

consulta simultânea em duas tabelas iguais

Enviado: 22 Nov 2017 02:07
por cjp
Era exatamente isso que eu queria, muito obrigado.