3

我目前正在处理一个 MySQL 查询,该查询从我的数据库中的三个表中提取信息:category category_industryindustry. 它们基于 ID 相关,例如:

category            category_industry        industry
------------------  ------------------       ------------------
ID | Title          c_id | i_id              ID | Title
 1 | Fab Floor         1 |    1               1 | Beef
                       1 |    2               2 | Pork

category_industry表按类别的 ID 和行业列出了一个类别所属的行业。我正在做的是获取每个行业的 ID,并从industry表格中提取该行业的名称。我用一个GROUP_CONCAT语句把标题放在一起。如果不在查询中进行搜索,结果应该是这样的,并且看起来确实如此:

Fabrication Floor
(Beef, Pork)

但是,如果我进行搜索,并且其中一个标题在搜索中匹配,它将只显示该标题,而不是所有标题。如果我正在搜索“牛肉”,这是我的查询:

SELECT *,
    GROUP_CONCAT(i.industry_title ORDER BY i.industry_title ASC SEPARATOR ', ') AS industries,
    MATCH (c.category_title, c.category_details) AGAINST ('Beef*' IN BOOLEAN MODE) AS cscore,
    MATCH (i.industry_title) AGAINST ('Beef*' IN BOOLEAN MODE) AS iscore,
    c.category_id AS cat_id
FROM category c
LEFT JOIN category_industry t  ON t.category_id = c.category_id
LEFT JOIN industry i ON i.industry_id = t.industry_id
WHERE
    MATCH (c.category_title, c.category_details) AGAINST ('Beef*' IN BOOLEAN MODE)
    OR MATCH (i.industry_title) AGAINST ('Beef*' IN BOOLEAN MODE)
    GROUP BY c.category_id
    ORDER BY (cscore + iscore) DESC, c.added_date ASC

此查询提供以下结果:

Fabrication Floor
(Beef)

它将显示该Beef行业中的所有类别,但会从列表中删除所有其他行业。我希望它仍能展示其他行业。

有谁知道我的问题的解决方案?我尝试过很多不同的方式重写我的陈述,但似乎无法让列表保持完整。先感谢您。

4

0 回答 0