現在、データベース内の 3 つのテーブルから情報を取得する MySQL クエリに取り組んでいcategory
category_industry
ますindustry
。これらは 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)
ただし、検索を行って、タイトルの 1 つが検索で一致した場合、すべてのタイトルではなく、そのタイトルのみが表示されます。「牛肉」を検索している場合のクエリは次のとおりです。
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
他のすべての業界はリストから削除されます。他の業界も見せてほしいです。
誰かが私の問題の解決策を知っていますか? ステートメントをさまざまな方法で書き直そうとしましたが、リストを完全な状態に保つことができないようです。前もって感謝します。