powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / проблем в перекрестному вопросу
5 сообщений из 5, страница 1 из 1
проблем в перекрестному вопросу
    #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
проблем в перекрестному вопросу
    #39571743
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novichok1993,

структура таблиц, конечно, это интересно и познавательно. Но лучше бы привели небольшой набор тестовых данных, отражающих суть задачи, и желаемый результат на этих тестовых данных.... Потому как, по словесной постановке задачи непонятно - что же именно вам нужно...
...
Рейтинг: 0 / 0
проблем в перекрестному вопросу
    #39571747
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novichok1993и происходит дублирование записей,
дублирование чего?
Добавь в группировку ID клиента.
если не поможет, так хоть локализирует.
...
Рейтинг: 0 / 0
проблем в перекрестному вопросу
    #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
проблем в перекрестному вопросу
    #39571898
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novichok1993,

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


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