些細な問題のように見えますが、機能させることができません。OracleSQLにあります。スクリプトのサンプルは次のとおりです。
create table product (
product_id number primary key,
name varchar(255)
);
create table producer (
producer_id number primary key,
name varchar(255)
);
create table catalog (
pp_product_id number,
pp_producer_id number,
price number
);
alter table catalog add constraint pp_product_id1 foreign key (pp_product_id) references product (product_id);
alter table catalog add constraint pp_product_id2 foreign key (pp_producer_id) references producer (producer_id);
insert into product (product_id, name) values (1, 'HDD 250 gb');
insert into product (product_id, name) values (2, 'HDD 500 gb');
insert into product (product_id, name) values (3, 'HDD 750 gb');
insert into producer (producer_id, name) values (1, 'Hitachi');
insert into producer (producer_id, name) values (2, 'Corsair');
insert into producer (producer_id, name) values (3, 'Western Digital');
insert into catalog (pp_product_id, pp_producer_id, price) values (1,1, 80);
insert into catalog (pp_product_id, pp_producer_id, price) values (1,3, 60);
insert into catalog (pp_product_id, pp_producer_id, price) values (2,1, 75);
insert into catalog (pp_product_id, pp_producer_id, price) values (2,2, 40);
insert into catalog (pp_product_id, pp_producer_id, price) values (3,2, 63);
insert into catalog (pp_product_id, pp_producer_id, price) values (3,3, 100);
つまり、合計6つの製品、3つのプロデューサー、3つのカテゴリーの製品(HDのタイプ)があります。私が必要としているのは、その製品に関連付けられた生産者名を持つ製品のタイプごとに、製品の最も安いものを表示することです。何かのようなもの:
Western Digital 250 gb 60
Corsair 500 GB 40
Corsair 750 gb 63
これにより、グループ内で最も安価なHDが選択されます(タイプ)
select p.name, min (c.price)
from product p, catalog c, producer prc
where c.pp_product_id = p.product_id and prc.producer_id = c.pp_producer_id
group by p.name;
...しかし、プロデューサー名を追加できませんか?私はいくつかの解決策を試しましたが、どれもうまくいきません。