2012-02-07 6 views
0

キーワード$ searchを使用してレコードセットを検索し、それらを最初に表示し、残りのレコードをクエリにプルしてランダムに並べ替える最良の方法は何でしょうか。言い換えれば、検索結果を上部に配置し、残りのレコードをランダムに配置します。ここに私の検索の最初の部分である:キーワード検索最初にランダムにレコードセットの残りを表示します

SELECT first_name, last_name, title, agency, address, 
     phone, more_info, description, img_name, active 
    FROM realtor 
    WHERE MATCH as rank (first_name, last_name, agency, description) 
     AGAINST ('$search' IN BOOLEAN MODE) 
    ORDER BY rank DESC 

そして私はUNIONしたい残りのレコードで、これはRAND() 、ORDER BYを使用して設定するか、このクエリを実行するためのより良い方法はありますか?これがUNIONの私の最初の試みです。

また、私のランクは、fname lnameで検索したようには見えません。最初にfname lnameレコードを取得しません。レコードの多くがタイトルカラムにlnameを持っています。これを行うより良い方法はありますか? THANKS

答えて

0

は、私は最初の部分を持って、この

SELECT first_name, last_name, title, agency, address, 
     phone, more_info, description, img_name, active, 
     MATCH  (first_name, last_name, agency, description) AGAINST ('$search' IN BOOLEAN MODE) as relv 
    FROM realtor 
     HAVING relv>0 order by relv DESC 
+0

はBOOLEAN MODEを除去することで動作するように、今UNION ALLを使用してレコードのセットの残りの部分を追加することに取り組んでいますしてみてください。ここでは私がこれまで持っていたことは$ result = mysql_query( "first_name、last_name、代理店、住所、電話、more_info、description、img_name、アクティブなFROM realtor WHERE where MATCH(first_name、last_name、代理店、説明)AGAINST( '$ ( '$ search')ORDER BY RAND( '$ search')を検索するには、検索条件に一致するキーワードを入力してください。 ) "); – studebaker

+0

方法がサーバーの負荷を増加させる可能性があることに注意してください(特に大きなテーブルの場合)。 ** relv> 0 **を持たないで私の提供したコードをテストできますか?一致した行をすべて取得した後、無関係の行が表示されます.'SELECT first_name、last_name、title、agency、address、 phone、more_info、description、img_name、active、 MATCH(first_name、last_name、代理店、説明)BOOLEAN MODEの '$ SEARCH'をrelvとして FROM realtor から注文relv DESC ' – Huseyin

関連する問題