2009-08-31 15 views

答えて

2

のようなもの:

SELECT song_id, MATCH(band_name, album_name, song_name) 
     AGAINST ('search term') 
    FROM bands join albums using (band_id) JOIN songs USING (album_id) 
ORDER BY MATCH(band_name, album_name, song_name) AGAINST ('search term') DESC 

これはまた、アルバムの表のband_id列、および歌でalbum_idを持っていることを、もちろん、前提としています。

MATCH ... AGAINST関数は、MySQLによって計算された「関連性」スコアを返します。この関数を使用して注文すると、関連性によって結果が並べ替えられます。

また、_name列に対してフルテキストインデックスを作成すると、これははるかに高速に動作します。

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

+0

これは私の問題を解決しません。私は関連性によって結果を並べ替える必要があります。 – Psyche

+0

私は関連性、最も関連性の高い結果を最初に並べ替える 'order by'句を追加しました。 –

+0

私は、MATCH ... AGAINST句をエイリアスして複製を取り出します。 –

関連する問題