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 を取得します。それを表示します。今、私が好きなようにすると、歌詞フィールドが表示されますが、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;

上記のコードは historylist テーブルです

これは

  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 に答える