Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Zerocalt

Problema com uma SQL

Recommended Posts

Tenho duas tabelas assim:

 

usuarios

- id

- nome

 

chat

- id

- id_de

- id_para

- mensagem

- data

 

Estou tentando criar uma SQL que liste os nomes dos usuários que conversei no chat ordenado pela data decrescente, ou seja, pela última mensagem enviada, porém um usuário no chat pode ser quem envia a msg (id_de) ou quem recebe a msg (id_para).

 

Tentei assim a SQL:

SELECT distinct(a.nome), a.id FROM usuarios a, chat b WHERE (b.id_de=1 or b.id_para=1) and (b.id_para=a.id or b.id_de=a.id) ORDER BY b.data DESC

 

SELECT distinct(a.nome), a.id FROM usuarios a, chat b WHERE (b.id_de=1 and b.id_para=a.id) or (b.id_para=1 and b.id_de=a.id) ORDER BY b.data DESC

 

porém não funcionou a ordenação do campo data.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O campo data tem que type ?

Date ?

Varchar ?

 

Pode ser isto

Compartilhar este post


Link para o post
Compartilhar em outros sites

O distinct pode estar causando isto.

 

Sai errado como ? A data nao esta no result set.Como sabe que sai errado ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido!!!

A SQL ficou assim:
SELECT distinct (outro_user), nome FROM (SELECT outro_user, u.nome, data FROM ( ( SELECT c.id_de as outro_user, c.data FROM usuarios u JOIN chat c ON ( u.id = c.id_de AND c.id_para = 1) ) UNION ( SELECT c.id_para as outro_user, c.data FROM usuarios u JOIN chat c ON ( u.id = c.id_para AND c.id_de = 1) ) ) msg JOIN usuarios u ON (outro_user = u.id) ORDER BY data DESC ) other_ordered

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.