大家好,大家都在尝试组合一个更好的 SQLite SELECT 查询。我已经浏览了互联网上的 SO 和其他地方,但还没有解决这个问题,所以这里是:
我在 SQLite 中有两个表:tblMessage 和 tblCategory。用户可以禁用单个消息,或禁用整个消息类别。
tblMessage 看起来像这样(简化):
INT _id, INT categoryId, TEXT messageText, BOOL messageHidden
tblCategory 看起来像这样(简化):
INT_id, TEXT categoryName, BOOL categoryHidden
就目前而言,我正在从第一张桌子上挑选一条消息......
SELECT * FROM tblMessage ORDER by RANDOM() LIMIT 1 WHERE msgHidden = "F"
...然后打开另一个光标到 tblCategory 以获取匹配 categoryId 的信息。
SELECT * FROM tblCategory WHERE _id = (categoryID from first select)
然后我继续检查 categoryHidden 是否为真(在代码中),在这种情况下,我返回并再次进行整个消息选择,直到我得到一个不是来自隐藏类别的消息。
这一切都正常工作,但是我怀疑我可以在初始消息 SELECT 语句中消除这些隐藏类别的结果,并省去代码中的比较。我正在研究 JOINS 和 UNIONS,但我对 SQL 还很陌生,还没有找到我想要的东西。
这是很简单的事情吧?
提前致谢!