连接三表

Joining three table

提问人:Hooch 提问时间:11/16/2023 最后编辑:Hooch 更新时间:11/16/2023 访问量:38

问:

我敢肯定我错过了一些愚蠢的东西,但是......我有 3 张桌子。.显然我在这里编造了 bs,但请继续玩。我在 android 上这样做,所以它是 SQLite......没有完全的外部连接,我相信这是我真正想要的。

表1

 id type speed, weight, color
------------------------------
|1  car  80mph, 900pds, white
|2  boat 40mph, 400pds, white
|3  car  90mph, 800pds, green
|4  boat 30mph, 750pds, black

表2

id, seats, doors
----------------
|1  4,     4
|3  2,     2

表3

id  waterDisplaced
------------------
|2  400gal
|4  400gal

我只是想把它们合二为一,取代不存在的。显然,在android sqllite中,这比应有的要难。

我想要什么

 id type speed, weight, color, seats, doors, waterDisplaced
-----------------------------------------------------------------
|1  car  80mph, 900pds, white, 4,     4,     nul
|2  boat 40mph, 400pds, white, nul,   nul,   400gal
|3  car  90mph, 800pds, green, 2,     2,     nul
|4  boat 30mph, 750pds, black, nul,   nul,   400gal

我尝试过一连串的左联接、联合、右联接等。老实说,太多人记得我尝试过的所有事情。

Android SQLite Kotlin

评论

1赞 broot 11/16/2023
到目前为止,你尝试了什么?对你来说具有挑战性的部分是什么?这似乎是最典型的JOIN案例。
0赞 Hooch 11/16/2023
哦,伙计,浏览列表太广泛了,我还没有将它们全部保存下来。它拒绝正确加入。有时我会遇到关于列数不匹配的错误,有时它会填充但会发送 ID 号。
0赞 AndrewL 11/16/2023
这似乎是一个 SQL 问题,不是 Kotlin 也不是 Android。您能否用 3 个表格结构更新您的问题,这些结构显示了与您显示所需输出表格的表格相匹配的来源。答案是帮助您构建和SQL连接查询(根据需要进行外部/内部连接等)
0赞 Hooch 11/16/2023
我会的,我把它标记为 android 和 kotlin,只是因为它有点指定版本等。
0赞 Hooch 11/16/2023
我希望这能澄清它?

答:

2赞 broot 11/16/2023 #1

这是一个非常典型的案例:LEFT JOIN

SELECT
  table1.*,
  table2.*,
  table3.*
FROM table1
LEFT JOIN table2 USING(id)
LEFT JOIN table3 USING(id)

请注意,我没有测试此代码,因此它可能包含小问题或可能需要适应 sqlite。

评论

0赞 Hooch 11/16/2023
这真的很接近。它只是添加 3 个 id 表。它在 id 1 上对它们进行排序,但随后有 id:1 和 id:2 以及各自的 null。我可能需要回去在db上重做我的课程。
0赞 Hooch 11/17/2023
所以看起来是这样,但我需要添加表 2 和 3 中的每个单独的列,显然省略了 id。非常感谢伙计!自从我做sql/database以来已经很久了,我真的很感激!