提问人:Hooch 提问时间:11/16/2023 最后编辑:Hooch 更新时间:11/16/2023 访问量:38
连接三表
Joining three table
问:
我敢肯定我错过了一些愚蠢的东西,但是......我有 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
我尝试过一连串的左联接、联合、右联接等。老实说,太多人记得我尝试过的所有事情。
答:
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以来已经很久了,我真的很感激!
评论