2 つのテーブルを持つ MySQL データベースがあります。1 つ目は部門の階層で、各レコードには同じテーブル内の親レコードがあり、最上位レベルのparent_id は 0 です。
2 つ目は製品の表です。各製品は、部門ツリーのどこにでも存在できます。
検索する部門を指定して製品を検索できるようにする必要がありますが、検索では、指定された部門のすべてのサブ部門内を検索する必要があります。これは単一のクエリで実行できますか?
私の「プラン B」は、各製品の親 ID のリストを新しいフィールドに格納し、LIKE クエリを使用してそのフィールドを検索することですが、それはどういうわけか厄介なようです。
ダミーデータ:
id|parent_id|name
1|0|Main 1
2|0|Main 2
3|0|Main 3
4|1|Sub 1-1
5|1|Sub 1-2
6|1|Sub 1-3
7|4|Sub 1-1-1
8|4|Sub 1-1-2
9|4|Sub 1-1-3
id|department|product
1|1|test product 1
2|4|test product 2
3|7|test product 3
SELECT * FROM products WHERE department = 1 ; want to receive all three products
SELECT * FROM products WHERE department = 4 ; want to receive products 2 and 3
SELECT * FROM products WHERE department = 7 ; want to receive only product 3