2014-03-07 84 views
1

我在sql中有这个查询,并且我无法弄清楚它的正确性。SQL获取聊天查询

我正在尝试查询以获得聊天结果。

select message, first_name, last_name, dataPost,picture 
from chat_comms 
right join utilizadores 
      on (chat_comms.id_writer = utilizadores.id_user) 
       or (chat_comms.id_reader = utilizadores.id_user) 
where id_writer = 1 
or (id_reader = 1 and id_writer = 13) 
order by dataPost ASC 

结果

enter image description here

名字,姓氏,图片,应该是不同的,因为它们是不同的用户,我怎么能解决这个问题?


SQL FIDDLE:

VIEW SQL FIDDLE


+0

无法了解表格中的数据。我的猜测是在你的连接条件下你有'OR'与其他条件,尝试用'AND' –

+0

取代它代替我,我必须改变到左连接这是没有问题的,但是不要返回任何数据用户! – Severiano

回答

1

它看起来像你有重复的行,因为其中一个用户是“作家”,另一个是“读者”。我猜你实际上想要连接到“作家”和“读者”的chat_comms中的每一行都有一行。在这种情况下,你需要加入到utilizadores而不是两次使用or的:

select message, writer.first_name, writer.last_name, dataPost, picture 
from chat_comms 
left join utilizadores writer on chat_comms.id_writer = writer.id_user 
left join utilizadores reader on chat_comms.id_reader = reader.id_user 
where id_writer = 1 
or (id_reader = 1 and id_writer = 13) 
order by dataPost ASC 

这是因为你还没有充分描述你想要达到的效果只是一个猜测。

0

请检查下面提到查询:

SELECT message, first_name, last_name, dataPost,picture 
FROM chat_comms 
RIGHT JOIN utilizadores 
     ON chat_comms.id_writer = utilizadores.id_user 
     OR (chat_comms.id_reader = utilizadores.id_user) 
WHERE id_writer = 1 
order by dataPost ASC 

希望帮助,谢谢。