Задавайте вопросы, мы ответим
Вы не зашли.
Имеются таблицы вида
create table плательщик
(идентификационный_код char(20) primary key, фамилия char(20), имя char(20),
отчество char(20), индекс int, город char(20), улица char(20), номер_дома char(10),
номер_квартиры char(10), телефон int);
create table место_работы
(идентификационный_код char(20) primary key, название char(20),
должность char(20), зарплата int, индекс int, город char(20), улица char(20), номер_дома char(10),
номер_квартиры char(10) );
create table Имущество
(код_имущества int primary key , тип char(30), идентификационный_код char(20));
create table движимое_имущество
(код_имущества int primary key, модель char(20), объем_двигателя int, год_выпуска int ) inherits (имущество);
create table недвижимое_имущество
(код_имущества int primary key, индекс int, город char(20), улица char(20), номер_дома char(10), номер_квартиры char(10) ) inherits (имущество);
create table место_работы
(идентификационный_код char(20) primary key, название char(20),
должность char(20), зарплата int, индекс int, город char(20), улица char(20), номер_дома char(10),
номер_квартиры char(10) );
1. Нужно выбрать плательщиков (идентификационный код, фамилия, имя), у которых нет недвижимого имущеста, но есть несколько мест работы.
2. Выбрать плательщиков (идентификационный код, фамилия, имя), у которых есть несколько квартир в одном доме.
На счет первого запроса у меня идей нет.
Попробовал сделать второй подзапрос
select a.идентификационный_код, a.фамилия, a.отчество, a.имя from недвижимое_имущество c, плательщик a
where a.идентификационный_код = (
select a.идентификационный_код from плательщик a, недвижимое_имущество c
where c.номер_квартиры<>c.номер_квартиры
and c.улица=c.улица
and c.номер_дома=c.номер_дома
)
но ничего не вышло
Помогите пожалуйста
Отредактированно Eugine (10.12.2009 23:23:56)
Неактивен
А тут точно нужны подзапросы?
Запись select a.идентификационный_код from плательщик a, недвижимое_имущество c
where c.номер_квартиры<>c.номер_квартиры не имеет смысла. Попробуйте выполнить часть приведенного запроса (до where) и наглядно увидите почему.
Не понятно какую нагрузку несут поля типа `номер_квартиры` в таблице `плательщик`. Это информация о чем: месте работы, жительства, имущества, прописки?
1. Объединяете `плательщика` с `местом работы` по идентификационному коду, по нему же группируете и кол-во группируемых строк (т.е. мест работы) >1. Далее левое объединение полученного результата с `имуществом`, условие на тип имущества соответствующий недвижимости и отсутствие совпадений.
2. Объединяете `плательщика` с `имуществом` по идентификационному коду и с `недвижимостью` по коду имущества. У имущества тип соответствующий недвижимости, а далее группировка по идентификационному коду, городу, улице и номеру дома, и кол-во квартир > 1.
Неактивен