Ir para o conteúdo
  • 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

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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,

Editado por Rechousa

Pedro Martins

Sharing is Knowledge!

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.