Zerocalt 0 Denunciar post Postado Outubro 23, 2013 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
Motta 645 Denunciar post Postado Outubro 23, 2013 Que deu errado ? Compartilhar este post Link para o post Compartilhar em outros sites
Kakaroto1309 0 Denunciar post Postado Outubro 23, 2013 Posta o erro... Compartilhar este post Link para o post Compartilhar em outros sites
Zerocalt 0 Denunciar post Postado Outubro 23, 2013 O erro é que não ordena pela data. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 23, 2013 O campo data tem que type ? Date ? Varchar ? Pode ser isto Compartilhar este post Link para o post Compartilhar em outros sites
Zerocalt 0 Denunciar post Postado Outubro 23, 2013 O campo data é: datetimeMas posso ordenar por ID decrescente também... Mesmo assim não ordena correto. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 23, 2013 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
Zerocalt 0 Denunciar post Postado Outubro 24, 2013 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