SQL数据获取顺序由where条件(首先在哪里/类似结果第一顺序为第二顺序/喜欢结果在下一个顺序))

时间:2016-05-21 05:30:20

标签: sql search sql-order-by search-engine

按顺序排序的SQL数据获取条件(首先在哪里/首先按顺序排在第二位,而第二位是/喜欢按顺序排在下一个顺序,下一个顺序排在第二顺序)

实际上我想首先从品牌获得结果,从标题获得第二名,从cat1 / 2/3获得第三名搜索“dev”

INSERT INTO product_list (product_id, brand, title, cat1, cat2, cat3) VALUES
(1, 'lux mos',      'lux mos',      'lux mos dev',  'lux mos', 'lux mos'),
(2, 'lux mos',      'lux mos dev',  'lux mos',      'lux mos', 'lux mos'),
(3, 'lux mos dev',  'lux mos',      'lux mos',      'lux mos', 'lux mos'),
(4, 'lux mos',      'lux mos',      'lux mos dev',  'lux mos', 'lux mos'),
(5, 'lux mos dev',  'lux mos',      'lux mos',      'lux mos', 'lux mos');

then result for search "dev" is as product_id in order 3, 2, 1, 4

public function ProductList($PageNo = 0) { $search_str = 'dev'; $this->db->select('*'); if(isset($_GET['q'])){ $this->db->or_like('Brand', $search_str); $this->db->or_like('title', $search_str); $string = str_replace(' ', '-', $search_str); // Replaces all spaces with hyphens. $string = preg_replace('/[^A-Za-z\-]/', '', $string); $string = strtolower($string); $str_Arr = explode(' ', $string); foreach($str_Arr as $str){ if($str!=''){ $this->db->or_like('Brand', $str); $this->db->or_like('title', $str); } } } elseif(isset($_GET['cat1'])){ $this->db->where('cat1',$_GET['cat1']); } elseif(isset($_GET['cat2'])){ $this->db->where('cat2',$_GET['cat2']); } elseif(isset($_GET['cat3'])){ $this->db->where('cat3 like','%'.$_GET['cat3'].'%'); } $this->db->group_by("product_id"); $query = $this->db->get('product_list', 8, $PageNo*8); $result = $query->result(); return $result;

}

0 个答案:

没有答案