1

我正在尝试在我的数据库中显示一个字段。

基本上现在我有

'SELECT
 historylist.artist,
 historylist.ID,
 artistlist.lyrics,
 artistlist.ID
FROM historylist
 INNER JOIN artistlist
  ON historylist.ID = artistlist.ID
 ORDER BY historylist.date_played DESC
LIMIT 1;'     

现在这是不正确的。我需要使用历史列表 ID 来链接艺术家列表 ID。然后抓取字段artistlist.lyrics。然后显示它。现在,当我这样做时,它会显示歌词字段,但它为空。所以我猜它的搜索历史列表

  CREATE TABLE `historylist` (
 `ID` int(11) NOT NULL AUTO_INCREMENT,
 `songID` int(11) NOT NULL DEFAULT '0',
   `filename` varchar(255) NOT NULL DEFAULT '',
   `date_played` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
   `duration` int(11) NOT NULL DEFAULT '0',
   `artist` varchar(255) NOT NULL DEFAULT '',
   `title` varchar(255) NOT NULL DEFAULT '',
   `album` varchar(255) NOT NULL DEFAULT '',
   `albumyear` varchar(4) NOT NULL DEFAULT '',
   `website` varchar(255) NOT NULL DEFAULT '',
   `buycd` varchar(255) NOT NULL DEFAULT '',
   `picture` varchar(255) NOT NULL DEFAULT '',
   `listeners` mediumint(9) NOT NULL DEFAULT '0',
   `label` varchar(100) NOT NULL DEFAULT '',
   `pline` varchar(50) NOT NULL DEFAULT '',
   `trackno` int(11) NOT NULL DEFAULT '0',
   `composer` varchar(100) NOT NULL DEFAULT '',
   `ISRC` varchar(50) NOT NULL DEFAULT '',
   `catalog` varchar(50) NOT NULL DEFAULT '',
   `UPC` varchar(50) NOT NULL DEFAULT '',
   `feeagency` varchar(20) NOT NULL DEFAULT '',

   PRIMARY KEY (`ID`),
   KEY `date_played` (`date_played`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

上面的代码是历史列表

这个是

  CREATE TABLE IF NOT EXISTS `artistlist` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `filename` varchar(255) NOT NULL DEFAULT '',
  `diskID` int(11) NOT NULL DEFAULT '0',
  `flags` varchar(10) NOT NULL DEFAULT 'NNNNNNNNNN',
  `songtype` char(1) NOT NULL DEFAULT 'S',
  `status` tinyint(4) NOT NULL DEFAULT '0',
  `weight` double NOT NULL DEFAULT '50',
  `balance` double NOT NULL DEFAULT '0',
  `date_added` datetime DEFAULT NULL,
  `date_played` datetime DEFAULT NULL,
  `date_artist_played` datetime DEFAULT '2002-01-01 00:00:01',
  `date_album_played` datetime DEFAULT '2002-01-01 00:00:01',
  `date_title_played` datetime DEFAULT '2002-01-01 00:00:01',
  `duration` int(11) NOT NULL DEFAULT '0',
  `artist` varchar(255) NOT NULL DEFAULT '',
  `title` varchar(255) NOT NULL DEFAULT '',
   `album` varchar(255) NOT NULL DEFAULT '',
  `label` varchar(255) NOT NULL DEFAULT '',
 `pline` varchar(50) NOT NULL DEFAULT '',
  `trackno` int(11) NOT NULL DEFAULT '0',
  `composer` varchar(100) NOT NULL DEFAULT '',
  `ISRC` varchar(50) NOT NULL DEFAULT '',
  `catalog` varchar(50) NOT NULL DEFAULT '',
   `UPC` varchar(50) NOT NULL DEFAULT '',
  `feeagency` varchar(20) NOT NULL DEFAULT '',
  `albumyear` varchar(4) NOT NULL DEFAULT '0',
  `genre` varchar(20) NOT NULL DEFAULT '',
  `website` varchar(255) NOT NULL DEFAULT '',
  `buycd` varchar(255) NOT NULL DEFAULT '',
   `info` text,
   `lyrics` text,
   `picture` varchar(255) NOT NULL DEFAULT '',
   `count_played` mediumint(9) NOT NULL DEFAULT '0',
   `count_requested` mediumint(9) NOT NULL DEFAULT '0',

    PRIMARY KEY (`ID`),
     UNIQUE KEY `filename` (`filename`),
      KEY `date_played` (`date_played`),
     KEY `date_artist_played` (`date_artist_played`),
    KEY `date_album_played` (`date_album_played`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=347 ;

现在基本上每首歌我都可以显示调用历史列表的数据。但我需要使用它的历史列表ID。然后连接到艺术家列表 ID,以便拉出歌词字段

希望能帮助更多

4

1 回答 1

0

似乎您的加入条件不正确。

ON historylist.ID = artistlist.ID

如果这要工作,两个表都必须有 1-1 的关系。查看您的表格结构,我认为正确的条件是

ON historylist.artist = artistlist.artist
于 2013-09-25T06:21:10.967 回答