【问题标题】:SQL SELECT FROM TWO TABLES INNER JOINSQL 从两个表内部连接中选择
【发布时间】:2015-09-02 01:56:38
【问题描述】:

我正在尝试从我的AlbumArtistBand 表中选择并按字母顺序显示NameBandname。当尝试使用下面的选择语句时,它会显示每个乐队的所有专辑。任何帮助将不胜感激学校项目。

CREATE TABLE ArtistBand 
(
    ArtistID INT AUTO_INCREMENT PRIMARY KEY,
    BandName VARCHAR(255) NOT NULL,
    NameOfMembers VARCHAR(255),
    NumberOfMembers INT
);

CREATE TABLE Genre
(
    GenreID INT AUTO_INCREMENT PRIMARY KEY,
    GenreType VARCHAR(255) NOT NULL
);

CREATE TABLE Album 
(
    AlbumID INT AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR (255) NOT NULL,
    ReleaseDate DATE NOT NULL,
    Producers VARCHAR (255),
    ArtistID INT,
    GenreID INT,
    FOREIGN KEY(ArtistID) REFERENCES ArtistBand(ArtistID),
    FOREIGN KEY (GenreID) REFERENCES Genre (GenreID)
);

CREATE TABLE LookUp
(
    AlbumID INT,
    GenreID INT,
    FOREIGN KEY (AlbumID) REFERENCES Album (AlbumID),
    FOREIGN KEY (GenreID) REFERENCES Genre (GenreID)
);

INSERT INTO ArtistBand 
VALUES
    (NULL,'ACDC','BrianJohnson',4),
    (NULL,'Metallica','JamesHeitfield',4),
    (NULL,'TheBeatles','JohnLennon',4),
    (NULL,'JayZ','ShawnCarter',1),
    (NULL,'DangerMouse','BrianBurton',1);

INSERT INTO Album 
VALUES
    (NULL,'BackInBlack','1980-01-01',NULL,NULL,NULL),
    (NULL,'TheBlackAlbum','1991-01-01',NULL,NULL,NULL),
    (NULL,'WhiteAlbum','1968-01-01',NULL,NULL,NULL),
    (NULL,'TheBlackAlbum','2003-01-01',NULL,NULL,NULL),
    (NULL,'TheGreyAlbum','2004-01-01',NULL,NULL,NULL);

INSERT INTO Genre 
VALUES
    (NULL,'HeavyMetal'),
    (NULL,'HeavyMetal'),
    (NULL,'Pop'),
    (NULL,'HipHop'),
    (NULL,'HipHop');

SELECT   
    ArtistBand.BandName, Album.Name
FROM     
    ArtistBand
JOIN     
    Album 
ORDER BY 
    ArtistBand.BandName;

【问题讨论】:

  • 正如下面的 rcs 所说,您应该“始终”根据条件加入。否则将获取笛卡尔积。所以如果你的 table_1 有 100 条记录,table_2 有另外 100 条记录,那么你最终会得到 100*100=10k 条记录。

标签: sql select insert


【解决方案1】:

您需要在联接中添加条件,即ArtistID 在两个表中应该相同。因此,您的查询将如下所示:

SELECT   ArtistBand.BandName, Album.Name
FROM     ArtistBand
JOIN     Album ON ArtistBand.ArtistID = Album.ArtistID
ORDER BY ArtistBand.BandName;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 2017-02-20
    • 2021-11-04
    相关资源
    最近更新 更多