Я использую следующий запрос:
Код: Выделить всё
SELECT
CONCAT(b.cat_name, ' > ', a.cat_name) as value,
a.cat_id as data
FROM
categories a
LEFT JOIN
categories b
ON b.cat_id = a.cat_parent_id
WHERE
a.cat_path LIKE '%health%'
OR a.cat_slug LIKE '%health%'
OR a.cat_name LIKE '%health%'
OR a.cat_legacy_path LIKE '%health%'
ORDER BY
a.cat_path ASC
LIMIT
500
Я все равно хотел бы, чтобы они появлялись в моих результатах, однако в нынешнем виде результаты для корневых категорий возвращаются пустыми.
Если это имеет какое-то значение, я делаю это с помощью CodeIgniter3, поэтому вот код построителя запросов, который я использую:
Код: Выделить всё
$search_term = strtolower($search_term);
$this->db->select("CONCAT(b.cat_name, ' > ', a.cat_name) as value, a.cat_id as data");
$this->db->from('categories a');
$this->db->like('a.cat_path', $search_term, 'both', false);
$this->db->or_like('a.cat_slug', $search_term, 'both', false);
$this->db->or_like('a.cat_name', $search_term, 'both', false);
$this->db->or_like('a.cat_legacy_path', $search_term, 'both', false);
$this->db->join('categories b', 'b.cat_id = a.cat_parent_id', 'left');
$this->db->order_by("a.cat_path", 'ASC');
$this->db->limit('500');
$query = $this->db->get();
Подробнее здесь: https://stackoverflow.com/questions/649 ... not-null-u
Мобильная версия