2013-09-25 300 views
1

我想實現在我的數據庫中顯示一個字段。需要幫助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。然後顯示它。現在,當我這樣做,它顯示歌詞字段,但它的空。所以我猜測它的搜索historylist表

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 ; 

現在基本上每首歌我可以顯示數據進行調用到歷史列表。但我需要使用historylist id來拉動它。到然後連接到artistlist ID,以便它拉歌詞場

希望幫助更多

+0

不知道你的意思是「我在猜測它的搜索historylist表」,但你的連接看起來不錯。你確定有historylist.ID這也是在artistlist.ID? – andrewb

+1

你可以發佈你的兩個表結構嗎? –

+0

我需要它只顯示1個結果。顯示當前正在播放的歌手的歌詞。 – Vizionz

回答

0

好像你的加盟條件是不正確。

ON historylist.ID = artistlist.ID 

如果這是工作,兩個表都必須有1-1關係。看看你的表格結構,我認爲正確的條件將是

ON historylist.artist = artistlist.artist 
+0

仍然會做同樣的事情。在歌詞中顯示null – Vizionz

+0

這兩個表格之間必須有關係,並且您必須使用該鏈接列進行連接,否則明智的連接將不起作用。 – dcp1986

+0

以及它們相關的藝術家列表存儲數據庫中歌曲的所有數據。歷史列表顯示最近播放的內容。 – Vizionz