Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Выбрать детей "подарочного" возраста


Автор: mrbuu 14.1.2009, 00:18
Привет
У меня проблема, есть несколько таблиц
Код

create table GESCHENK(Geschenk varchar(80), MinAlter int, primary key(Geschenk));
create table WUNSCHZETTEL(Kind varchar(80), Geschenk varchar(80), primary key(Kind, Geschenk));
create table KIND(Kind varchar(80), Alte int, primary key(Kind));

insert into GESCHENK values ('Lego', 6);
insert into GESCHENK values ('Teddy', 1);
insert into GESCHENK values ('Handy', 10);
insert into GESCHENK values ('PC', 12);
insert into GESCHENK values ('Eisenbahn', 6);
insert into GESCHENK values ('Teleskop', 9);
insert into GESCHENK values ('Porsche', 18);
insert into GESCHENK values ('Schach', 8);
insert into GESCHENK values ('DVD', 12);

insert into WUNSCHZETTEL values ('Lara', 'PC');
insert into WUNSCHZETTEL values ('Lara', 'Porsche');
insert into WUNSCHZETTEL values ('Lara', 'Teddy');
insert into WUNSCHZETTEL values ('Susi', 'Schach');
insert into WUNSCHZETTEL values ('Susi', 'DVD');
insert into WUNSCHZETTEL values ('Ole', 'Handy');
insert into WUNSCHZETTEL values ('Ole', 'Lego');
insert into WUNSCHZETTEL values ('Bjorn', 'Teleskop');
insert into WUNSCHZETTEL values ('Julie', 'Handy');
insert into WUNSCHZETTEL values ('Julie', 'Eisenbahn');

insert into KIND values ('Julie', 8);
insert into KIND values ('Peter', 10);
insert into KIND values ('Lara', 6);
insert into KIND values ('Bjorn', 14);
insert into KIND values ('Ole', 8);
insert into KIND values ('Jimmy', 4);
insert into KIND values ('Susi', 14);


проблема заключается в том, что надо сравнивать возраст детей с "минимальным" возрастом для подарка.
Буду благодарен за ответ.

Автор: ТоляМБА 14.1.2009, 08:33
Цитата(mrbuu @  14.1.2009,  02:18 Найти цитируемый пост)
надо сравнивать возраст детей с "минимальным" возрастом для подарка.


Код
SELECT GESCHENK.Geschenk, GESCHENK.MinAlter, KIND.Kind, KIND.Alte
FROM GESCHENK, KIND
WHERE GESCHENK.MinAlter<=KIND.Alte


Покажет тебе подарки и детей которым данные подарки можно дарить. Лишние поля уберешь. Зачем ты привёл таблицу WUNSCHZETTEL я не догнал.


Автор: SergKO 14.1.2009, 08:47
Самое простое
Код

select *
from dbo.KIND k
    inner join dbo.GESCHENK g on g.MinAlter < k.Alte

Автор: ТоляМБА 14.1.2009, 08:52
SergKO, Julie и Ole останутся без Schach, я правда не знаю что это такое, но спасибо они тебе явно не скажут  smile 

Автор: SergKO 14.1.2009, 08:56
"Проглядел" ответ от ТоляМБА. В смысле не заметил  smile 

Практически одно и то же, кроме условия. Поставь <=. 


Автор: mrbuu 14.1.2009, 10:16
Цитата(ТоляМБА @  14.1.2009,  08:33 Найти цитируемый пост)
Зачем ты привёл таблицу WUNSCHZETTEL я не догнал.

да значит я плохо обяснил.
по wunschzettel видно кто какой подарок заказал на новый год.
Т.е. Bjorn'у 14 лет и он хочет Teleskop, Teleskop можно получить если ребенку исполнолось 9 лет.

Автор: vladimir74 14.1.2009, 10:50
попробуй так...
Код

select w.Kind, w.Geschenk
from WUNSCHZETTEL as w
inner join GESCHENK  as gon (g.Geschenk=w.Geschenk)
inner join Kind as k  on (k.Kind=w.Kind)
where g.MinAlter <= k.Alte


Цитата(ТоляМБА @  14.1.2009,  06:52 Найти цитируемый пост)
Julie и Ole останутся без Schach, я правда не знаю что это такое,

это обычные шахматы, но заказывала их кажется Susi...

Автор: mrbuu 14.1.2009, 12:15
работает, спасибо большое, какой хитрый этот инер джоин ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)