次のテーブルがあります。
- 次のように、ID 列、説明列、およびカテゴリの親 ID 列を持つカテゴリ テーブル:
cat_id | 猫の説明 | cat_pid -------+-----------------+-------- 1 | 状態 | 0 2 | テキサス | テキサス | 1 3 | カリフォルニア | 1 4 | タイトル | 0 5 | エンジニア | 4 6 | 弁護士 | 4 7 | ファーマー | ファーマー 4 8 | クレジットカード | 0 9 | ビザ | 8 10 | マスターカード | 8 ...2. 次のような顧客 ID と名前を持つ Customer テーブル:
cust_id | cust_name3. Customer と Category の間の多対多の関係である Category_Has_Customer。
--------+----------- 111111 | ジョン 222222 | デビッド 333333 | クリス 444444 | マーク ...
chc_cust_id | chc_cat_id ------------+----------- 111111 | 2 111111 | 5 111111 | 9 222222 | 7 222222 | 3 333333 | 6カテゴリの深さは 2 レベルのみです。
私のアプリケーションでは、顧客は 0 個以上のカテゴリを持つことができました。顧客が持っているカテゴリの一部またはすべてを表示したいと考えています。たとえば、すべてのカテゴリを表示することを選択した場合、次のテーブルが必要です。
顧客名 | 状態 | タイトル | クレジットカード ----------+------------+----------+------------ ジョン | ジョン | テキサス | テキサス | エンジニア | ビザ デビッド | カリフォルニア | ファーマー | ファーマー クリス | | | 弁護士 | マーク | | | | |タイトルとクレジット カードのみなど、特定のカテゴリも表示できるはずです。
顧客名 | タイトル | クレジットカード ----------+---------+------------ ジョン | ジョン | エンジニア | ビザ デビッド | ファーマー | ファーマー クリス | 弁護士 | マーク | | |
私はLEFT JOINでそれをやろうとしました。
SELECT c1.cust_id, c1.cust_name, t1.cat_desc as State
FROM Customer c1, Category_has_Customer chc
LEFT JOIN Category t1 ON t1.cat_pid = '1' AND chc.chc_cat_id = t1.cat_id
WHERE c1.cust_id = chc.chc_cust_id
しかし、行が重複しているため、役に立ちませんでした。