2016-11-16 12 views
1

例:「age」という属性を持つテーブル「Children」があります。私は今、子供からプライマリキー "SSN"だけを継承するテーブル "学生"を作成していますが、それに対応する子供の年齢から派生した属性 "グレード"が必要です(Children.age - 5)。新しいテーブルで派生属性を定義する際に、別のテーブルの属性を使用するにはどうすればよいですか?

これは私が作っや構文エラーを生じたことを試みたものです:

"Subqueries are not allowed in this context. Only scalar expressions are allowed."

create table Children 
(
    SSN int, 
    age int, 
    primary key(SSN) 
) 

create table Students 
(
    SSN int, 
    grade as (select C.age from Children C, Students S where C.SSN = S.SSN) - 5, 
    primary key(SSN) 
) 

私は選択クエリは必ずしもint型の値を返しませんので、それは意味がありません知っているにもかかわらずまだ作成していないサブクエリでテーブルを使用するのは意味がないので、私はここに追加して、おそらく同じように動作するサブクエリを使用する方法があるかどうかを確認したいと考えましたこのように私は試みた。

私は両方のテーブルを結合し、グレードのための仮想列を作成するためにビューを使用し、その後、通常は両方のテーブルを作成し、SQL Serverに2008

答えて

1

を使用しています。例えば

Select c.*, s.*, (c.age - 5) as grade from children c 
Inner join student s on s.childid = c.id 
+1

を、トルステンは私が示唆されたものの本質を捕獲しました。 – Forty3

1

ビュー使用します。それは私の答えを書くために連れて行ってくれた時には

CREATE VIEW Students AS 
    SELECT c.*, 
     Grade = c.age - 5 
    FROM Children c 
関連する問題