我有一个包含数百万个条目的数据集,其中包含歌曲及其艺术家。
我有
有3张桌子
现在,我想查找artist_id,artist_name和特定track_id的术语。
我如何找到它?找到track_id的artist_id,很简单。我写了
A
当我写信
0
它显示有关艺术家姓名和期限的多个记录。
当我写信
(select artist_id, track_id FROM tracks WHERE tracks.track_id = 'TR12739847';)
它说出了不明确的artist_id或没有这样的列。
有关更多参考,表的架构如下:
(select artist_name, term FROM tracks t join artists a on t.artist_id = a.artist_id join artist_term at on at.artist_id = a.artist_id WHERE track_id = 'TR12739847';)
如何获得解决方案? 我哪里错了?我可能错过了一点点小东西,或者这可能是一个非常基本的问题,但是我陷入了困境。
请帮助。谢谢。
答案 0 :(得分:0)
我写
(select artist_name, term, artist_id, track_id FROM tracks join artists on tracks.artist_id = artists.artist_id join artist_term on artist_term.artist_id = artists.artist_id WHERE tracks.track_id = 'TR12739847';)
时说模糊的artist_id或没有这样的列。
查询无法解析,因为您要加入具有相同通用名的表,例如:Artists表以及artist_term表中都存在artist_id,因此它询问您查询该查询时应引用哪一列
select artist_name, term, artist_id, track_id
要解决此问题,请为要引用的表创建一个别名,然后将该别名添加到列之前
例如:
select artists.artist_name
, artist_term.term
, tracks.artist_id
, tracks.track_id
FROM tracks
join artists
on tracks.artist_id = artists.artist_id
join artist_term
on artist_term.artist_id = artists.artist_id
WHERE tracks.track_id = 'TR12739847';