我在SQLite数据库中有3个表:
Songs:
_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
但是它给了我一个空表。我尝试使用 OR
代替 AND
并且它给出了错误的结果(每首歌在每个专辑中都重复,尽管艺术家是正确的)。如何修正我的查询语句以将这3个表连接到单个表中?
LEFT JOIN
。 - mawburnGROUP BY
。你应该将其作为一个不同的问题发布。 - Michael BerkowskiSELECT songs.id AS song_id, songs.name AS song_name, artist.* FROM...
但是,您必须知道列“id”指的是“artist.id”,而“name”是“artist.name”。您无法为表中的所有列提供“全局”别名前缀。我从未见过支持任何类似功能的RDBMS(尽管可能存在),也不符合标准SQL。 - Michael Berkowski