2011-06-24 19 views
2

私は、ユーザがフォームに入力しているものと類似したアイテムをルックアップする機能を構築しています。 ユーザはタイプと製造者の2つのフィールドを入力します複数のキーワードを持つMySQL MATCH

データベース内の対応する値と一致するレコードを検索し、最もよく一致するものを最初に返したいとします。これは実際に動作してスコアを生成

SELECT id, manuf, model, type, MATCH(manuf) AGAINST('BMW') AS `score_manuf`, MATCH(type) AGAINST('Car') AS `score_type` FROM `items` 

は、私は、各フィールドにスコアを割り当てて、クエリを持っています。

今、私は合計スコアを計算したい、それが後で結果をソートするために使用される2つのスコアの合計である:

SELECT id, manuf, model, type, MATCH(manuf) AGAINST('BMW') AS `score_manuf`, MATCH(type) AGAINST('Car') AS `score_type`, (score_manuf + score_type) as 'score' FROM `items` 

私はこのクエリを実行すると、私は "というエラーを取得しますscore_manuf "は未知の列です。

エイリアスフィールドで算術演算を実行できませんか?それとも、私がやろうとしていることを達成する別の方法がありますか?

答えて

3
SELECT id, manuf, model, type, 
     @m := MATCH(manuf) AGAINST('BMW') AS score_manuf, 
     @t := MATCH(type) AGAINST('Car') AS score_type, 
     @m + @t as score 
    FROM items; 

これは、あなたがuser-defined variables

+0

うわーを定義する方法ですが、私はこれが何を意味するのかわかりませんが、それが働きました。ありがとう! –

関連する問題