2017-05-04 128 views
0

我想加入三個表:錯誤代碼:1066不是唯一的表/別名問題

SELECT Songs.SongId, 
Artist.ArtistFName, 
Artist.ArtistLName, 
Album.AlbumName, 
Genre.GenreName, 
Songs.SongTrackNr, 
Songs.SongName, 
Songs.SongDuration 

FROM 
(((Album 
INNER JOIN Songs ON Album.AlbumId = Songs.AlbumId) 
INNER JOIN Ablum ON Album.ArtistId = Artist.ArtistId) 
INNER JOIN Album ON Album.GenreId = Genre.GenreId); 

但我得到了不唯一的錯誤,我應該在哪裏把別名在專輯表?

感謝

+1

使用表的別名,如'Ablum a1 ON a1 ...' – jarlh

回答

1


您可以使用下面的查詢,

SELECT Songs.SongId, 
Artist.ArtistFName, 
Artist.ArtistLName, 
Album.AlbumName, 
Genre.GenreName, 
Songs.SongTrackNr, 
Songs.SongName, 
Songs.SongDuration 
FROM 
Album Album 
INNER JOIN Songs Songs 
ON (Album.AlbumId = Songs.AlbumId) 
INNER JOIN Artist Artist 
ON (Album.ArtistId = Artist.ArtistId) 
INNER JOIN Genre Genre 
ON (Album.GenreId = Genre.GenreId); 
+0

解決了這個問題,但我想知道雙重聲明,例如「Album Album」,第二個聲明可以作爲別名嗎? – user2371684

+0

它會工作。它被認爲是一個別名 –

2

你有FROM子句中AblumAlbum。我想你打算:

SELECT s.SongId, ar.ArtistFName, ar.ArtistLName, a.AlbumName, g.GenreName, 
     s.SongTrackNr, s.SongName, s.SongDuration 
FROM Album INNER JOIN 
    Songs s 
    ON a.AlbumId = s.AlbumId INNER JOIN 
    Artists ar 
    ON a.ArtistId = ar.ArtistId INNER JOIN 
    Genre g 
    ON a.GenreId = g.GenreId; 

修復是對錶名稱。另外,請注意表別名 - 它們使查詢更容易編寫和讀取。另外在FROM條款中不需要括號。

+0

謝謝,藝術家有一個小的錯字,它應該是藝術家,但現在我得到a.AlbumName上的錯誤爲錯誤:1054未知列 – user2371684

+0

而且我有雙重檢查和複製並粘貼正確的列名 – user2371684

+0

@ user2371684。 。 。儘管你可以選擇接受你喜歡的任何答案,但是你相當好奇的是你接受了半小時後發佈的基本相同的答案。 –

相關問題