0

次の問題を解決する必要があります。2 つのテーブルの間に関係がありません。それらの最初の内容は、いくつかのオブジェクトに関する情報です。そんな感じ

create table properties
(
    obj1_prop1 varchar(10),
    obj1_prop2 varchar(10),
    obj1_prop3 varchar(10),
    obj2_prop1 varchar(10),
    obj2_prop2 varchar(10),
    obj2_prop3 varchar(10),
    obj3_prop1 varchar(10),
    obj3_prop2 varchar(10),
    obj3_prop3 varchar(10),
    obj4_prop1 varchar(10),
    obj4_prop2 varchar(10),
    obj4_prop3 varchar(10),
    id int not null,
    primary key (id)
)

このオブジェクトはすべて、より小さなオブジェクトで構成されています (それぞれに追加のプロパティがあります)。小さいオブジェクトの数量に関する情報はありません。この情報は 2 番目のテーブルに保存されます。

create table parts
(
    obj_id int not null,
    prop1 varchar(10),
    prop2 varchar(10),
    prop3 varchar(10),
    extra_prop varchar(10)
)

extra_prop最初のテーブルにこの列があるような形式でこのテーブルからデータを取得するには、どのクエリを使用する必要がありますか。結果は、次のフィールドを持つテーブルがあるように見えるはずです。

create table properties
(
    obj1_prop1 varchar(10),
    obj1_prop2 varchar(10),
    obj1_prop3 varchar(10),
    obj1_extra_prop varchar(10),
    obj2_prop1 varchar(10),
    obj2_prop2 varchar(10),
    obj2_prop3 varchar(10),
    obj2_extra_prop varchar(10),
    obj3_prop1 varchar(10),
    obj3_prop2 varchar(10),
    obj3_prop3 varchar(10),
    obj3_extra_prop varchar(10),
    obj4_prop1 varchar(10),
    obj4_prop2 varchar(10),
    obj4_prop3 varchar(10),
    obj4_extra_prop varchar(10),
    id int not null,
    primary key (id)
)
4

1 に答える 1

0

プロパティ テーブルに obj_id 参照列を追加する必要があります。したがって、理想的には、そのようなフィールドを 4 つ持つことになります。その後、参加できます。

create table properties
(
    obj1_id int,
    obj1_prop1 varchar(10),
obj1_prop2 varchar(10),
obj1_prop3 varchar(10),
obj2_id int,
obj2_prop1 varchar(10),
obj2_prop2 varchar(10),
obj2_prop3 varchar(10),
obj3_id int,
obj3_prop1 varchar(10),
obj3_prop2 varchar(10),
obj3_prop3 varchar(10),
obj4_id int,
obj4_prop1 varchar(10),
obj4_prop2 varchar(10),
obj4_prop3 varchar(10),
id int not null,
primary key (id)
)

その後、次のように参加できます

SELECT *[set your columns here] FROM properties AS p 
LEFT OUTER JOIN parts AS p1 ON p1.obj_id = p.obj1_id  
LEFT OUTER JOIN parts AS p2 ON p2.obj_id = p.obj2_id  
LEFT OUTER JOIN parts AS p3 ON p3.obj_id = p.obj3_id  
LEFT OUTER JOIN parts AS p4 ON p4.obj_id = p.obj4_id  
于 2013-05-26T11:58:02.740 に答える