2012-06-10 88 views
1

我在使用SQLite进行左连接时遇到了问题。LEFT JOIN SQLite

contacts: id_c, first_name, last_name, photo_link 
messages: id_msg, id_sender, id_recipient, utimestamp, message, chatID 

结构我做一个查询,如下所示:

SELECT * FROM messages m 
    LEFT OUTER JOIN contacts c ON (c.id_c=m.id_sender) 
    WHERE m.chatID=26 

该查询从消息表返回值。
但是为联系人表返回null。

我尝试了几种方法,无法解决此问题。任何建议来解决这个问题?

+1

你为什么认为它不应该返回NULL?请发布以下三件事:a)每个表中的几个示例行证明问题b)当表只包含那些示例行时运行查询的结果c)您认为结果应该是什么。请考虑在http://sqlfiddle.com上发布这些信息,以便我们更容易为自己进行测试。 –

+1

我在[sqlfiddle]中创建了一个示例(http://sqlfiddle.com/#!7/f726e/2) 我不知道这个网站。感谢您的建议。 在这种情况下它完美运行,但在Chrome开发人员工具中运行方式不同。应该发生什么? – sandrosss

+0

也许这是SQLite中的错误,有时会发生(另一个'LEFT JOIN'相关错误:http://comments.gmane.org/gmane.comp.db.sqlite.general/73075 – biziclop

回答

0

从联系人表中的列返回空值正是我从工作LEFT JOIN预期的情况下,有没有接触,其id_c匹配id_senderchatID 26.你有反复检查你在contacts表中有这样的联系吗?

+1

我在[ sqlfiddle](http://sqlfiddle.com/#!7/f726e/2)。在这种情况下它可以很好地工作,但在Chrome开发者工具中的工作方式并不一样,应该发生什么? – sandrosss

1

问题解决了。可能有一个错误。一旦在SQL小提琴中测试过,我意识到它的工作没有问题。感谢您的关注。