Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / проблем в перекрестному вопросу / 5 сообщений из 5, страница 1 из 1
18.12.2017, 22:55
    #39571690
novichok1993
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблем в перекрестному вопросу
привет всем
не могу разобраться

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
CREATE TABLE raion 
(raion TEXT NOT NULL UNIQUE,
ID CHAR(5) PRIMARY KEY);

CREATE TABLE typehouse 
(type TEXT NOT NULL UNIQUE,
ID CHAR(5) PRIMARY KEY);


CREATE TABLE klient
(FIRST_NAME TEXT  NOT NULL,
LAST_NAME TEXT  NOT NULL,
ID CHAR(5) PRIMARY KEY,
id_raion CHAR(5) NOT NULL,
adress_klient text,
CONSTRAINT fk  FOREIGN KEY (id_raion)
REFERENCES raion (ID)ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT UN UNIQUE(LAST_NAME, FIRST_NAME));

  CREATE TABLE house(
ID CHAR(5) PRIMARY KEY,
ID_raion CHAR(5) NOT NULL,
id_typehouse char(5) not null,
adress_house text,
rajmer integer not null,
CONSTRAINT FK3 FOREIGN KEY (ID_raion) REFERENCES raion(ID) 
ON UPDATE NO ACTION ON DELETE CASCADE,
FOREIGN KEY (ID_typehouse) REFERENCES typehouse(ID)
ON UPDATE NO ACTION ON DELETE CASCADE);


create table obmen(
id char(5) primary key,
id_klient char(5) not null,
id_house char(5) not null,
date_obmen date not null,
CONSTRAINT FK5 FOREIGN KEY (ID_klient) REFERENCES klient(ID)
ON UPDATE NO ACTION ON DELETE CASCADE,
FOREIGN KEY (ID_house) REFERENCES house(id) 
ON UPDATE NO ACTION ON DELETE CASCADE,
 obmen boolean) ;



надо получить фио клиента и информацию об обмене, которые обменивают больше 3 раза
ну написал запрос и выполнил на постгре,ну все равно результата не то
и происходит дублирование записей ,непонятно откуда

Код: sql
1.
2.
3.
4.
5.
select first_name,last_name,raion,adress_klient,adress_house,rajmer,count(obmen.id_house)
from klient join raion on klient.id_raion=raion.id join house on raion.id=house.id_raion join obmen on house.id=obmen.id_house
     join typehouse on house.id_typehouse=typehouse.id
     group by last_name,first_name,raion,adress_klient,adress_house,rajmer,raion
     having  count(obmen.id_house) >3;



https://ibb.co/gxxHC6][img] https://preview.ibb.co/hE7vzm/1.jpg [/img]
https://ibb.co/jmwAX6][img] https://preview.ibb.co/fY265R/2.jpg [/img]

Подскажите ,пожалуйста
...
Рейтинг: 0 / 0
19.12.2017, 05:13
    #39571743
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблем в перекрестному вопросу
novichok1993,

структура таблиц, конечно, это интересно и познавательно. Но лучше бы привели небольшой набор тестовых данных, отражающих суть задачи, и желаемый результат на этих тестовых данных.... Потому как, по словесной постановке задачи непонятно - что же именно вам нужно...
...
Рейтинг: 0 / 0
19.12.2017, 05:48
    #39571747
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблем в перекрестному вопросу
novichok1993и происходит дублирование записей,
дублирование чего?
Добавь в группировку ID клиента.
если не поможет, так хоть локализирует.
...
Рейтинг: 0 / 0
19.12.2017, 11:20
    #39571871
novichok1993
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблем в перекрестному вопросу
Щукина Анна,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Тема: учет обмена жилплощади.
Объекты: районы, клиенты, жилье, обмены жилья, тип жилья.
Для моделирования задачи необходимо хранить следующую информацию:
* ФИО клиента
* Адрес места работы клиента с указанием района
* Характеристика жилья (адрес, район, размер жилья)
* Тип жилья (1, 2, 3, -комнатная квартира)
* Обмен жилплощади (было, стало)
* Дата обмена
Дополнительные условия:
* один клиент может произвести несколько обменов жилья.



я переделал запроса

Код: plsql
1.
2.
3.
4.
5.
select first_name,last_name,adress_klient,adress_house,rajmer,count(obmen.id_klient)
from klient join obmen on klient.id=obmen.id_klient  join house  on house.id=obmen.id_house
     join typehouse on house.id_typehouse=typehouse.id
     group by last_name,first_name,adress_klient,adress_house,rajmer
     having  count( obmen.id_house) >=2;



в результате получил клиентом с id =k1, которым обменял одно и то же жилья
Но как мне вывести клиентом с id=k1
По идее,у него он обменял жилья больше всех

результат запроса

URL=https://www.2000.ua/specproekty_ru/dose/politika/zagorii-gleb_politika.htm/][IMG] https://cdn1.savepice.ru/uploads/2017/12/19/407a65be2382c53cabda260034ee38db-full.jpg [/IMG]


таблицы:
https://www.2000.ua/specproekty_ru/dose/politika/zagorii-gleb_politika.htm/][IMG] https://cdn1.savepice.ru/uploads/2017/12/19/c792af74dc561d814df0a556f8a0f15a-full.jpg [/IMG]
...
Рейтинг: 0 / 0
19.12.2017, 12:01
    #39571898
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблем в перекрестному вопросу
novichok1993,

для вывода "лидера продаж" нужно использовать LIMIT
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / проблем в перекрестному вопросу / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]