我正在为我的网站上的ajax自动建议功能进行查询,需要一些帮助。
我使用以下查询:
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
问题出现在parent_cat_id为NULL 的根类别中
我仍然希望它们出现在我的结果中,但就目前情况来看,根类别的结果是空的。
有人能帮我调整这个查询吗?这样我就可以完成我想要做的事情了?
如果有什么不同的话,我用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();
理想情况下,我希望根类别(其中cat_parent_id为NULL(只选择为a.cat_name as value
,与CONCAT(b.cat_name, ' > ', a.cat_name) as value
相当。
如有任何帮助,我们将不胜感激。
您只需要将其设为条件:
SELECT
COALECSE(CONCAT(b.cat_name, ' > ', a.cat_name), a.cat_name) as value,
或者,更精确地检查NULL的确切原因,
SELECT
IF(a.cat_parent_id IS NULL, a.cat_name, CONCAT(b.cat_name, ' > ', a.cat_name)) as value,
所以在你的情况下,在代码点火器中,它会转化为类似于:
$this->db->select("COALECSE(CONCAT(b.cat_name, ' > ', a.cat_name), a.cat_name) as value, a.cat_id as data");