Я пытаюсь связать 4 таблицы вместе с INNER JOIN
Мой код выглядит так
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 и ВНУТРЕННИХ СОЕДИНЕНИЯХ, любая помощь и объяснения были бы отличными!
2 ответа
Попробуй это
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;
проверить последовательность и появление таблиц в соединении
Вы упоминаете 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;