sqlite 如何链接JOIN来查询远程表?

dphi5xsq  于 2023-04-12  发布在  SQLite
关注(0)|答案(1)|浏览(140)

我正在写一个家庭使用的应用程序,并决定使用SQLite作为数据库来学习一些SQL。
该应用程序的工作原理如下:

  • 有一组people,他们有一个名字→这个信息来自位置A,并反映在people表中。
  • 我从一个不相关的源B得到了一些结果(表results),其中包含一个action的结果,并指向一个“用户引用”(也来自B)
  • 我通过将源B用户指向“人”手动链接了这两个世界。

我现在想得到一个没有做他们应该做的事情的people.name的表(即done对他们来说是NULL)。
这是我以前的业余开发经验不再有帮助的地方:如何连接这三个表,以便我可以从一个表(SELECT name from peopleSELECT,但在两跳之外的表上放置条件。
我原以为OUTER JOIN是一个solution(我现在仍然这么认为),但我有一个中间表。
我该怎么做?

tf7tbtn2

tf7tbtn21#

加入两次:

SELECT name
 from people
 join app_user on (people.id = app_user.id_people)
 join results on (app_user.id_app = results.id_app and results.done is null)

这里我们将表app_user连接到表people,然后将results连接到前面的结果。
如果表results包含未完成任务的行,则不需要外部连接。
如果表results不包含未完成任务的行,则需要使用where子句进行外部连接。

SELECT name
 from people
 join app_user on (people.id = app_user.id_people)
 left join results on (app_user.id_app = results.id_app)
where results.done is null

希望这对你的困惑有所帮助。

相关问题