sql - 我需要使用链接表加入
问题描述
三张表如下:
CREATE TABLE Artist
(
ArtistKey char(20) NOT NULL PRIMARY KEY,
ArtistName varchar(50) NOT NULL
)
CREATE TABLE AlbumInfo
(
AlbumInfoKey char(20) NOT NULL PRIMARY KEY,
AlbumTitle varchar(50) NOT NULL,
AlbumDate date NULL,
AlbumStudio varchar(50) NULL
)
CREATE TABLE AlbumArtist
(
AlbumInfoKey char(20) NOT NULL,
ArtistKey char(20) NOT NULL,
PRIMARY KEY CLUSTERED
(
AlbumInfoKey ASC,
ArtistKey ASC
))
我的目标是列出所有艺术家及其专辑。我似乎什么也做不了。
我努力了:
SELECT
Artist.ArtistName,
AlbumInfo.AlbumTitle
FROM Artist
JOIN AlbumArtist
ON Artist.ArtistKey = AlbumArtist.ArtistKey
JOIN AlbumInfo
On AlbumInfo.AlbumInfoKey = AlbumArtist.AlbumInfoKey
然而,这没有给我任何回报,甚至没有错误。
解决方案
好吧,我不得不重新做你的整个任务,我想出了更专业,更好的数据库管理方法。您需要删除这些表,然后重新执行整个操作,如下面的代码所示:
--First create Artist table
CREATE TABLE Artist
(
Artist_key int PRIMARY KEY IDENTITY(1,1),
ArtistName varchar(50) NOT NULL,
);
--Then create Album table
CREATE TABLE AlbumInfo
(
Album_key int NOT NULL PRIMARY KEY IDENTITY(1,1),
AlbumTitle varchar(50) NOT NULL,
AlbumDate date NULL,
AlbumStudio varchar(50) NULL,
Artist_key int FOREIGN KEY (Artist_key) REFERENCES Artist(Artist_key)
);
-- Must have Artist data before referencing in the album table
INSERT into Artist (ArtistName) values ('John')
INSERT into AlbumInfo (AlbumTitle,AlbumDate,AlbumStudio,Artist_key) values ('ABC3','2020-6-12','Def3',(select Artist_key from Artist where Artist_key = 1 ))
--test if data has been inserted
SELECT * FROM Artist
SELECT * FROM AlbumInfo
-- And finally this query will show the Artist with their relevant Albums
SELECT ArtistName,af.AlbumTitle,AlbumStudio from Artist a join AlbumInfo af on af.Artist_key = a.Artist_key
结果是:
推荐阅读
- sql-server - SQL 链接服务器 - 查询失败
- botframework - 如何将用户的文本转发到另一个对话框
- tensorflow - 如何在张量流中分配张量的元素
- hangfire - Hangfire 作业卡在处理状态
- sql - 仅返回满足 2 个或更多条件的行
- java - Hibernate 使用 java.sql.Date 错误吗?
- reactjs - 无法从用户输入数据更新反应状态
- android-linearlayout - 使用 Constraint Layout 开发 TV android Apps
- python - 最接近python中的虚拟调用
- xamarin.forms - Xamarin Forms 更新包