私は2つのテーブルを持っています。 表1(tbl_1)データベースからツリーを構築する
| ID | Name |
| -- | -------------|
| 1 | Company1 |
| -- | -------------|
| 2 | Company2 |
| -- | -------------|
| 3 | Company2 |
表2(tbl_2)今Company_2は、親会社であるAN私は次の結果を取得したいということ
| ID | Company_group |
| -- | ------------- |
| 1 | Company2 |
| -- | ------------- |
| 2 | Company2 |
| -- | ------------- |
| 3 | Company2 |
私は。
| ID | Name | RootName | RootId |
| -- | -------------| --------- | ------ |
| 1 | Company1 | Company2 | 2 |
| -- | -------------| ----------|--------|
| 3 | Company3 | Company2 | 2 |
私はparentIdを知らない。しかし、次のクエリですべての親会社を選択することができます:
SELECT DISTINCT id parentId,
name parent_name FROM tbl_1 WHERE name in (
SELECT DISTINCT
Company_group
FROM tbl_2)
この階層のツリーを構築するにはどうすればよいですか?私は、助けてくださいと思うことはできません。
これは奇妙なアーキテクチャですが、データベースの設計者は私ではありません。
また、私はクエリを書いたが、正しくは動作しません。より多くのレコードを返します。
SELECT ac.id_c parentId, acc.id, ac.Company_group parent_name
FROM tbl_2 ac
JOIN tbl_2 acc
ON ac.Company_group = acc.Company_group
AND ac.id in (
SELECT DISTINCT id parentId
FROM tbl_1 WHERE name in (
SELECT DISTINCT
id parentId
FROM tbl_2)
)
WHERE ac.Company_group iS NOT NULL AND acc.id IS NOT NULL
and ac.id <> acc.id
ORDER BY ac.Company_group
ありがとうございます。あなたのクエリは、私が待つよりも多くのレコードを返します。しかし、私の最後のクエリで返される結果が少なくなります。 – Seva
@セヴァ、ようこそ。このクエリは、サンプルの正しい結果を返します。実稼働環境で望ましくない結果が得られた場合は、サンプルを変更して、実動データを正しく表すようにしてください。 –