2

OK、2 つのテーブルがあります

一つはビジネス

id
name
telephone
primary_category
secondary_category
tertiary_category

別のテーブルはカテゴリです

id
name
parent_id

現在、ビジネスには、この場合、一次/二次およびオプションの三次カテゴリが必要です。これがこれを行う唯一の方法です

SELECT * FROM business b
INNER JOIN business_category bc_1 ON b.primary_category = bc.id
INNER JOIN business_category bc_2 ON b.secondary_category = bc.id
LEFT OUTER JOIN business_category bc_3 ON b.tertiary_category = bc.id

私が欲しいのは、ビジネステーブルの各カテゴリの名前だけです。

4

1 に答える 1

0

私の知る限り、あなたが現在行っている方法はすでに効率的です。サブクエリを作成するなど、多くの選択肢がありますが、作成したものよりも効率的ではありません。

すべてのテーブルに適切にインデックスを定義していれば、問題ありません。より具体的には、これらの列について:

primary_category
secondary_category
tertiary_category

これらはカテゴリテーブルからの外部キーであるためです。

于 2012-09-29T09:53:42.917 に答える