gpt4 book ai didi

android - 在 SQLite 数据库中加入 3 个表

转载 作者:IT老高 更新时间:2023-10-28 23:04:02 25 4
gpt4 key购买 nike

我在 SQLite 数据库中有 3 个表:

歌曲:

_id | name | length | artist_id (foreign key) | album_id (foreign key)

艺术家:

_id | name

专辑:

_id | name

我需要一个由以下列组成的表的查询(在 Android 应用中使用):

_id | name | length | artist_id | artist_name | album_id | album_name

但是,我编写了以下查询语句:

SELECT Songs._id, Songs.name, Songs.length, Songs.artist_id, Artists.name, Songs.album_id, Albums.name FROM Songs, Artists, Albums WHERE Songs.artist_id = Artists._id AND Songs.album_id = Albums._id

但它给了我一张空 table 。我尝试了 OR 而不是 AND 并给出了不正确的结果(尽管艺术家是正确的,但每张专辑中的每首歌都重复)。如何修复我的查询语句以将 3 个表连接到一个表中?

最佳答案

使用显式的 JOIN 而不是隐式的,以下应该得到你想要的,尽管奇怪的是你的隐式连接语法一开始就没有返回正确的结果。我使用了 LEFT JOIN 来说明没有关联艺术家或专辑的歌曲,但这对于您的数据集可能不是必需的,并且 INNER JOIN 可以改为使用。

我还添加了列别名以消除获取行时的歧义,因为您的大多数表中都有相似的列名(id, name)。

SELECT
Songs._id AS song_id,
Songs.name AS song_name,
Songs.length,
Songs.artist_id AS artist_id,
Artists.name AS artist_name,
Songs.album_id AS album_id,
Albums.name AS album_name
FROM
Songs
LEFT JOIN Artists ON Songs.artist_id = Artists._id
LEFT JOIN Albums ON Songs.album_id = Albums._id

关于android - 在 SQLite 数据库中加入 3 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11321354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com