【问题标题】:I am trying to link 4 tables together with INNER JOIN我正在尝试将 4 个表与 INNER JOIN 链接在一起
【发布时间】:2014-04-02 05:45:40
【问题描述】:

我的代码是这样的

CREATE TABLE Genre (
genreID INT NOT NULL DEFAULT 0,
genreName VARCHAR(20) NULL,
PRIMARY KEY (genreID));


CREATE TABLE Artists (
ArtistID INT NOT NULL DEFAULT 0,
name VARCHAR(45) NULL,
Genre_genreID INT NOT NULL,
PRIMARY KEY (ArtistID),
FOREIGN KEY (Genre_genreID)
REFERENCES Genre(genreID));



CREATE TABLE Albums (
albumsID INT NOT NULL DEFAULT 0,
name VARCHAR(45) NULL,
Artists_ArtistID INT NOT NULL,
PRIMARY KEY (albumsID),
FOREIGN KEY (Artists_ArtistID)
REFERENCES Artists(ArtistID));

CREATE TABLE Songs (
songID INT NOT NULL,
name VARCHAR(45) NULL,
length TIME NULL,
Albums_albumsID INT NOT NULL DEFAULT 0,
PRIMARY KEY (songID),
FOREIGN KEY (Albums_albumsID)
REFERENCES Albums (albumsID));

SELECT Artists.name, Genre.genreName, Songs.name
FROM Songs
INNER JOIN Genre ON Artists.ArtistID=Genre.genreID
INNER JOIN Artists ON Albums.Artists_ArtistID=Artists.ArtistID
INNER JOIN Albums ON Songs.Albums_albumID=Albums.albumsID;

希望尝试将艺术家、流派和歌曲的名称进行匹配和展示。然而我得到了

Unknown column 'Artists.ArtistID' in 'on clause'

我是 SQL 和 INNER JOINS 的新手,任何帮助和解释都会很棒!

【问题讨论】:

    标签: mysql sql inner-join on-clause


    【解决方案1】:

    试试这个

    SELECT Artists.name, Genre.genreName, Songs.name
    FROM Songs
    INNER JOIN Albums ON Songs.Albums_albumID=Albums.albumsID
    INNER JOIN Artists ON Albums.Artists_ArtistID=Artists.ArtistID
    INNER JOIN Genre ON Artists.ArtistID=Genre.genreID;
    

    检查连接中表的顺序和出现

    【讨论】:

      【解决方案2】:

      您在第一行加入时提到了Songs 表。但是你在最后一行加入ON函数的表就像你的代码一样,你应该试试这个方法:

      SELECT 
      Artists.name, Genre.genreName, Songs.name
      FROM Songs
      INNER JOIN Albums 
      ON Songs.Albums_albumID=Albums.albumsID
      INNER JOIN Artists 
      ON Albums.Artists_ArtistID=Artists.ArtistID
      INNER JOIN Genre 
      ON Artists.ArtistID=Genre.genreID;
      

      【讨论】:

      • 请不要复制答案,而是欣赏别人的答案
      猜你喜欢
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 2019-05-27
      • 1970-01-01
      • 2019-12-28
      • 2014-02-21
      相关资源
      最近更新 更多