0

こんにちは、ID、検索語、および最も売れたものでフィルタリングすることにより、検索結果を (jQuery オートコンプリート用に) 混合するアイデアを探しています。次の列を持つ「products」テーブルがあります:「id、name、...、sold」ここに私のSQL

    SELECT * FROM products
    WHERE 
        state=1 
        AND ( 
            id='$search' OR id LIKE '$search%' OR  id LIKE '%$search%' OR 
            name='$search' OR name LIKE '$search%' OR name LIKE '%$search%' 
            ) 
        ORDER BY ???

このクエリには「sold (sold-items)」は含まれていません。これも私のクエリに組み合わせる方法を探しています。この注文が必要です

1. full id (e.g. sombody types 312 than the first row must be id=312)
2. full name (...)
3. otherwise search-pattern combined with "sold"
4

1 に答える 1

0

このようなことができます

SELECT p.*, 
       MAX(3 * (id = '$search' OR id LIKE '%$search%'),
           2 * (name LIKE '%312%'),
           1 * (sold LIKE '%312%')) rank 
  FROM products p
 WHERE state = 1 
   AND (id = '$search' OR id LIKE '%$search%'
    OR name LIKE '%$search%'
    OR sold LIKE '%$search%')
 ORDER BY rank DESC

これがSQLFiddleのデモです

于 2013-08-17T07:27:58.137 に答える