需要帮助Mysql查询

时间:2013-09-25 05:40:58

标签: mysql

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

基本上就在我有

的那一刻
'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。然后显示它。现在,当我这样做它显示歌词字段但它的null。所以我猜它的搜索历史列表表

  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,以便拉动歌词字段

希望有更多帮助

1 个答案:

答案 0 :(得分:0)

好像您的加入条件不正确。

ON historylist.ID = artistlist.ID

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

ON historylist.artist = artistlist.artist