Задача: добавить записи в таблицу PC.
Какие именно, описано в первом посте.
Это нужно сделать в 1 SQL запрос.
Над запросом я просидел долго. Сейчас он такой:
Код:
![Выделить весь код](images/misc/selectcode.png)
insert into pc
( code, model, speed, ram, hd, cd, price )
select min ( laptop.code ) + 20,
min ( laptop.model ) + 1000,
max ( laptop.speed ) * 2,
max ( laptop.ram ) * 2,
max ( laptop.hd ) * 2,
min ( pc.cd ),
max ( laptop.price ) / 1.5
from laptop, pc
where laptop.model in
(Select model from laptop
group by model
having count(model)>1)
Логика такая:
Код:
![Выделить весь код](images/misc/selectcode.png)
insert into pc
( code, model, speed, ram, hd, cd, price )
Вставить значения, которые равны:
Код:
![Выделить весь код](images/misc/selectcode.png)
select min ( laptop.code ) + 20,
min ( laptop.model ) + 1000,
max ( laptop.speed ) * 2,
max ( laptop.ram ) * 2,
max ( laptop.hd ) * 2,
min ( pc.cd ),
max ( laptop.price ) / 1.5
from laptop, pc
Минимальным значениям группы, где:
Код:
![Выделить весь код](images/misc/selectcode.png)
where laptop.model in
(Select model from laptop
group by model
having count(model)>1)
в каждой группе берутся только модели, которых в таблице Laptop больше одной.