2017-05-20 12 views
0

ERモデルによれば、テーブルTaskがあり、それには8つの子テーブルがあります。これらの子テーブルのそれぞれは、その種類に応じて異なる属性を持って、例えば次のようにタスクテーブルには、(実際のERモデルは、タスクテーブルでより多くの属性を持っている)テーブルとその子テーブルから結果セットを取得するにはどうすればよいですか?

Task_ID | Version | Title | Place | Reason | Description 

とその子テーブルの1つのようになりますになりますこの

Task_ID | Version | Begin | Duration | Duration_unit 

のようなこの

Task_ID | Version | Begin | End 

もう一つは、我々は、我々は2つのインサート、それと何の問題を実行開始と終了を使用して新しいタスクを作成するとしましょう。しかし、私はすべてのタスクをすべての異なるタスクタイプから取得したいのですが?たとえばID = 1のタスクの場合、SELECTのステートメントはどのように見えますか?私はTASKTASK4に挿入するが、私はそれを選択しようとするたびに、それは何も表示され、ambiguos列エラーが発生する場所を入れていないテスト

SELECT * FROM TASK,TASK_1,TASK_2,TASK_3,TASK_4,TASK_5,TASK6,TASK_7,TASK_8; 

:私はこのような選択をdointみました。私は大きなことを考えたJOINしかし、それが効率的かどうかはわかりません。また、NULL値の列を取りたいと思っています。

+0

_ambiguos列error._ 3表には同じ列名があります。 'SELECT *'はより具体的にする必要があります – RiggsFolly

+0

例えば、ID、バージョン、タイトル、場所、理由、説明、タスクの開始と終了を選択する必要があります。 'SELECT ID、Version、Title TASK_3、TASK_4、TASK_5、TASK6、TASK_7、TASK_8のいずれかであることを特徴とする請求項1に記載の方法。 'とまだambiguosエラーを持っている –

+0

あなたは8があると言うが、2だけを記述する。別の1のように見えるかもしれない? – Strawberry

答えて

0

null値の列の意味を理解できていません。しかし、WHERE節を含めることで、結果セットを減らして、列内のNULL値を持つ行を除外することができます。

select t.*, ct.Begin, ct.End, ct2.Duration, ct2.Duration_unit 
from task t 
join childTask ct 
on t.Task_ID=ct.Task_ID 
join childTask2 ct2 
on ct2.Task_ID=ct.Task_ID 
関連する問題