首页 > 解决方案 > Android Room:查询不返回所有包含连接的行

问题描述

我有两个表 - 表 a 和表 b。在表 a 中,我有 20 列,其中 10 列连接到表 b。这样做的原因是用户可以选择多个值,这些值不能存储到表格中的一个单元格/行/列中,因此需要将其规范化到自己的表格中。我在检索数据时遇到问题。如果表 a 和 b 中都存在数据,则 im 使用的查询仅返回结果。但是我的用例允许用户只有表 a 中的数据。无论表 b 中是否没有数据,我都需要修改我的查询以返回行中存在的任何数据。

这是我的查询的精简版(不需要所有 20 列)

SELECT
tableA.id,
tableA.currentSituation,
tableA.moodStart,
tableA.automaticThought1,
tableB.id,
tableB.allOrNothing,
tableB.blamingOthers,
tableB.catastrophizing,
FROM tableA
JOIN tableB
ON tableA.id = tableB.tableAid
ORDER BY tableA.currentSituation
DESC

无论表 b 中是否不存在数据,任何修改此查询以返回所有行/数据的帮助将不胜感激。

标签: androidsqliteandroid-sqliteandroid-room

解决方案


你好吗?我看到两个错误来更正您的脚本:首先将“SELECT”字添加到您的脚本中,另一个将“JOIN”更改为“LEFT OUTER JOIN”:

SELECT tableA.id,
tableA.currentSituation,
tableA.moodStart,
tableA.automaticThought1,
tableB.id,
tableB.allOrNothing,
tableB.blamingOthers,
tableB.catastrophizing,
FROM tableA
LEFT JOIN tableB
ON tableA.id = tableB.tableAid
ORDER BY tableA.currentSituation
DESC;

更多信息:sqlite 加入参考


推荐阅读