Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

ventinho

Consulta em 2 ou mais tabelas ordenando por data

Recommended Posts

ventinho

Boas Pessoal!

Estou aqui há seculos e nao consigo resolver esta questao...

entao é o seguinte:

Tenho 2 tabelas uma de mensagens outra de noticias e queria selecionar todos os campos das duas tabelas mas ordenando pela data de inserçao dos registos...

Ex:

Noticias1 postada em 15/05/2013

Mensagem1 postada em 06/05/2013

Mensagem2 postada em 07/05/2013

Noticia2 postada em 20/05/2013

O resultado pretendido seria:

Mensagem1 postada em 06/05/2013

Mensagem2 postada em 07/05/2013

Noticias1 postada em 15/05/2013

Noticia2 postada em 20/05/2013

como fazer isto com o mysql??

Obrigado

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Não sou especialista em MySql, mas acho que conseguirás resolver da seguinte forma (não testei):

a) Fazendo um UNION (ou UNION ALL no caso de queres manter registos com dados repetidos) das tabelas Noticias com a tabela Mensagens;

b) Ordenar o resultado

Escreveste que querias selecionar todos os campos. Para usares o UNION, as tabelas têm de ter a mesma estrutura, caso contrário não funciona. Embora não tendo a mesma estrutura, podes resolver facilmente colocando um valor por omissão ou NULL. Como não disseste que campos é que tens, estou a assumir as seguintes estruturas:

  • Noticias (idNoticia INT, Titulo VARCHAR(200), Data DateTime)
  • Mensagens (idMensagem INT, Titulo VARCHAR(200), Data DateTime)

SELECT * FROM
(
SELECT idNoticia, NULL as idMensagem, Titulo, Data
	FROM Noticias
UNION NULL as idNoticia, idMensagem, Titulo, Data
    FROM Mensagens
) Temp
ORDER BY Data ASC, Titulo ASC

Espero ter ajudado,

Edited by Rechousa

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
brunoais

Uma alternativa é fazer basicamente como o Rechsousa fez, mas faz-se INNER JOIN das duas tabelas sem condições de JOIN em vez de UNION.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
ventinho

Boas pessoal!

Ja consegui... Vi as vossas resposta e fui pesquisar um pouco sobre UNION e JOIN e encontrei a soluçao...

Obrigado aos 2...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.