0

私のコードは次のようになります

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 の初心者である私は、どんな助けと説明も素晴らしいでしょう!

4

2 に答える 2

0

これを試して

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;

結合内のテーブルの順序と出現をチェックする

于 2014-04-02T05:48:52.800 に答える
0

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;
于 2014-04-02T05:52:10.553 に答える