2017-04-14 19 views
0

は、私はこのような記録に必要な「sub_tablesは」という「table_list」を持っています異なるデータを持つ列:選択テーブル(SQLツリーマージ)

「table_list」にリストされている「sub_tables」をマージし、私が試した::

======================== 
ID | name | parentID 
------------------------ 
1 | asv | 0 
2 | asdf | 1    <= sub_table_1 
3 | ggre | 2 
======================== 

======================== 
ID | name | parentID 
------------------------ 
4 | uyer | 3 
5 | dfgh | 4    <= sub_table_2 
6 | dhgr | 5 
======================== 

私は何をしようとしていることである

SELECT * FROM (SELECT needed_sub_list FROM table_list) 

ただし、動作しません。

======================== 
ID | name | parentID 
------------------------ 
1 | asv | 0 
2 | asdf | 1    
3 | ggre | 2 
4 | uyer | 3 
5 | dfgh | 4    <= result of table_list_1 
6 | dhgr | 5    (and so for table_list_2....etc.) 
======================== 

、私のプロジェクトはsub_tablesの異なる組み合わせを必要とするかもしれないので、 私は他のテーブルでは、それらの組み合わせを保存する必要があります:私は見てほしい何

です。 これは、table_listsに応じて必要なsub_tablesしか知ることができないため、サブテーブルを直接マージすることはできません。 誰もがこれで私を助けてくれますか? ありがとうございます。

+0

は' 1行以上を返します。あなたのステートメントでは、サブクエリーのSELECTステートメントの行が1つ必要です。おそらく '#1242 - サブクエリが1行以上を返します。 'エラー – hakiko

+0

あなたが得た出力は、メインテーブルとして動作できないクエリの結果です。上記の結果が必要な場合は、最初に結果表を取り出してそれらの表に対して結合操作を実行する必要があります。 – Rams

答えて

1

私はあなただけの基本的なUNIONクエリ使用して、あなたが欲しいものを得ることができると思います。(table_list FROM needed_sub_listを選択) `

SELECT ID, name, parentID 
FROM sub_table_1 
UNION ALL 
SELECT ID, name, parentID 
FROM sub_table_2 
ORDER BY ID 
+0

私は組合を直接使うことはできません。私のプロジェクトでは必須のsub_tablesは動的で、必要なsub_tablesの名前は "table_list"というテーブルにリストされています。 –

+0

これは宿題の問題で、あなたがこのようにしなければならない限り、悪いdatabaaeデザインのように聞こえる。 –

+0

提案はありますか? –