Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
 Аватар для Kamazov
5 / 4 / 2
Регистрация: 05.01.2022
Сообщений: 399

Сортировка

10.08.2022, 21:09. Показов 4603. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть связанные таблицы.

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
CREATE TABLE clients 
(
clients_id INTEGER NOT NULL,
name VARCHAR (1000) NOT NULL,
place_of_birth VARCHAR (1000) NOT NULL,
date_of_birth DATE, 
address VARCHAR (1000) NOT NULL,
passport VARCHAR (100) NOT NULL
    );
    
    CREATE TABLE products 
(
products_id INTEGER NOT NULL,
product_type_id INTEGER NOT NULL,
name VARCHAR (100) NOT NULL,
client_ref INTEGER NOT NULL,
open_date DATE, 
close_date DATE
    );
    
    CREATE TABLE product_type 
(
product_type_id INTEGER NOT NULL,
name VARCHAR (100) NOT NULL,
begin_date DATE, 
end_date DATE,
    tafif_ref INTEGER NOT NULL
    );
    
    CREATE TABLE accounts 
(
accounts_id INTEGER NOT NULL,
name VARCHAR (100) NOT NULL,
    saldo NUMERIC (10,2)
    client_ref INTEGER NOT NULL,
open_date DATE, 
close_date DATE,
    product_ref INTEGER NOT NULL,
    acc_num VARCHAR (25)
    );
    
    CREATE TABLE records 
(
records_id INTEGER NOT NULL,
dt INTEGER NOT NULL,
    SUM NUMERIC (10,2),
    acc_ref INTEGER NOT NULL,
    oper_date DATE
    );
    
    CREATE TABLE tarifs 
(
tarifs_id INTEGER NOT NULL,
name VARCHAR(100),
    cost NUMERIC (10,2)
    );
    
 
ALTER TABLE ONLY accounts
    ADD CONSTRAINT pk_accounts PRIMARY KEY (accounts_id);
 
 
    ALTER TABLE ONLY product_type
    ADD CONSTRAINT pk_product_type_id PRIMARY KEY (product_type_id);
 
    
    ALTER TABLE ONLY products
    ADD CONSTRAINT pk_product_id PRIMARY KEY (product_id);
 
 
 
ALTER TABLE ONLY product_type
    ADD CONSTRAINT pk_product_type_id PRIMARY KEY (product_type_id);
    
    ALTER TABLE ONLY products
    ADD CONSTRAINT pk_products_id PRIMARY KEY (products_id);
 
 
ALTER TABLE ONLY records
    ADD CONSTRAINT pk_records_id PRIMARY KEY (records_id);
    
    ALTER TABLE ONLY tarifs
    ADD CONSTRAINT pk_tarifs_id PRIMARY KEY (tarifs_id);
 
 
 
 
 
 
 
    ALTER TABLE ONLY accounts
    ADD CONSTRAINT fk_acc_cl FOREIGN KEY (client_ref) REFERENCES clients (clients_id);
 
 
    ALTER TABLE ONLY accounts
    ADD CONSTRAINT fk_acc_prod FOREIGN KEY (product_ref) REFERENCES products (products_id);
    
    
    
    ALTER TABLE ONLY products
    ADD CONSTRAINT fk_prod_cl FOREIGN KEY (client_ref) REFERENCES clients (clients_id);
    
    
    
 
    ALTER TABLE ONLY products
    ADD CONSTRAINT fk_prod_prodtype FOREIGN KEY (product_type_id) REFERENCES product_type (product_type_id);
Нужно сформировать выборку которая содержит все счета, относящиеся к продуктам типа ДЕПОЗИТ, принадлежащих клиентам, у которых нет открытых продуктов типа КРЕДИТ.

Данные для таблиц следующие:

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
INSERT INTO tarifs VALUES (1,'Тариф за выдачу кредита', 10);
INSERT INTO tarifs VALUES (2,'Тариф за открытие счета', 10);
INSERT INTO tarifs VALUES (3,'Тариф за обслуживание карты', 10);
 
INSERT INTO produc_type VALUES (1, 'КРЕДИТ', to_date('01.01.2018','DD.MM.YYYY'), NULL, 1);
INSERT INTO produc_type VALUES (2, 'ДЕПОЗИТ', to_date('01.01.2018','DD.MM.YYYY'), NULL, 2);
INSERT INTO produc_type VALUES (3, 'КАРТА', to_date('01.01.2018','DD.MM.YYYY'), NULL, 3);
 
INSERT INTO clients VALUES (1, 'Сидоров Иван Петрович', 'Россия, Московская облать, г. Пушкин', to_date('01.01.2001','DD.MM.YYYY'), 'Россия, Московская облать, г. Пушкин, ул. Грибоедова, д. 5', '2222 555555, выдан ОВД г. Пушкин, 10.01.2015');
INSERT INTO clients VALUES (2, 'Иванов Петр Сидорович', 'Россия, Московская облать, г. Клин', to_date('01.01.2001','DD.MM.YYYY'), 'Россия, Московская облать, г. Клин, ул. Мясникова, д. 3', '4444 666666, выдан ОВД г. Клин, 10.01.2015');
INSERT INTO clients VALUES (3, 'Петров Сиодр Иванович', 'Россия, Московская облать, г. Балашиха', to_date('01.01.2001','DD.MM.YYYY'), 'Россия, Московская облать, г. Балашиха, ул. Пушкина, д. 7', '4444 666666, выдан ОВД г. Клин, 10.01.2015');
 
INSERT INTO products VALUES (1, 1, 'Кредитный договор с Сидоровым И.П.', 1, to_date('01.06.2015','DD.MM.YYYY'), NULL);
INSERT INTO products VALUES (2, 2, 'Депозитный договор с Ивановым П.С.', 2, to_date('01.08.2017','DD.MM.YYYY'), NULL);
INSERT INTO products VALUES (3, 3, 'Карточный договор с Петровым С.И.', 3, to_date('01.08.2017','DD.MM.YYYY'), NULL);
 
 
INSERT INTO accounts VALUES (1, 'Кредитный счет для Сидоровым И.П.', -2000, 1, to_date('01.06.2015','DD.MM.YYYY'), NULL, 1, '45502810401020000022');
INSERT INTO accounts VALUES (2, 'Депозитный счет для Ивановым П.С.', 6000, 2, to_date('01.08.2017','DD.MM.YYYY'), NULL, 2, '42301810400000000001');
INSERT INTO accounts VALUES (3, 'Карточный счет для Петровым С.И.', 8000, 3, to_date('01.08.2017','DD.MM.YYYY'), NULL, 3, '40817810700000000001');
 
INSERT INTO records VALUES (1, 1, 5000, 1, to_date('01.06.2015','DD.MM.YYYY'));
INSERT INTO records VALUES (2, 0, 1000, 1, to_date('01.07.2015','DD.MM.YYYY'));
INSERT INTO records VALUES (3, 0, 2000, 1, to_date('01.08.2015','DD.MM.YYYY'));
INSERT INTO records VALUES (4, 0, 3000, 1, to_date('01.09.2015','DD.MM.YYYY'));
INSERT INTO records VALUES (5, 1, 5000, 1, to_date('01.10.2015','DD.MM.YYYY'));
INSERT INTO records VALUES (6, 0, 3000, 1, to_date('01.10.2015','DD.MM.YYYY'));
 
INSERT INTO records VALUES (7, 0, 10000, 2, to_date('01.08.2017','DD.MM.YYYY'));
INSERT INTO records VALUES (8, 1, 1000, 2, to_date('05.08.2017','DD.MM.YYYY'));
INSERT INTO records VALUES (9, 1, 2000, 2, to_date('21.09.2017','DD.MM.YYYY'));
INSERT INTO records VALUES (10, 1, 5000, 2, to_date('24.10.2017','DD.MM.YYYY'));
INSERT INTO records VALUES (11, 0, 6000, 2, to_date('26.11.2017','DD.MM.YYYY'));
 
INSERT INTO records VALUES (12, 0, 120000, 3, to_date('08.09.2017','DD.MM.YYYY'));
INSERT INTO records VALUES (13, 1, 1000, 3, to_date('05.10.2017','DD.MM.YYYY'));
INSERT INTO records VALUES (14, 1, 2000, 3, to_date('21.10.2017','DD.MM.YYYY'));
INSERT INTO records VALUES (15, 1, 5000, 3, to_date('24.10.2017','DD.MM.YYYY'));
Если оформлен продукт типа КРЕДИТ по счету продукта проходит дебетовая операция – банк выдает деньги клиенту (в таблице RECORDS появляется запись с полем DT = 1 и суммой зачисления, запись в таблице RECORDS влияет на поле SALDO таблицы ACCOUNTS). Если оформлен продукт ДЕПОЗИТ или КАРТА по счету клиента проходит кредитовая операция – клиент вносит средства на счета (в таблице RECORDS появляется запись с полем DT = 0 и суммой зачисления, запись в таблице RECORDS влияет на поле SALDO таблицы ACCOUNTS).

По данным таблицы видно, что в выборке должно быть 7 строк.

Делаю выборку со следубщим кодом:

SQL
1
2
3
4
5
6
7
8
9
SELECT 
records.dt,
accounts.acc_num,
records.acc_ref,
clients.name,
product_type.name
 
FROM  records, accounts, clients,product_type
WHERE records.dt = 0 AND records.acc_ref = accounts_id
И у меня в выборке 63 записи, вместо 7. Никак не пойму как задать условие, чтобы убрать лишее.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2022, 21:09
Ответы с готовыми решениями:

Сортировка данных
В базе данных есть таблица, в ней ключевое поле "Id" заполненное тестовыми данными. Проблема в том, что при сохранении заполненных данных,...

Сортировка версий
Есть таблица вот такого вида с версиями ПО 1.10.4 1.14.2 1.13.1 1.13.1 1.14.2 1.14.2 (null) 1.11.1

Сортировка и подсчет
Есть таблица сыгранных шахматных игр между двумя игроками: id user_id user2_id Примеры (таблицы games): id - 1 user_id - 1...

46
55 / 50 / 5
Регистрация: 30.06.2022
Сообщений: 251
16.08.2022, 01:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Kamazov Посмотреть сообщение
попробовать подключить эту бд к джаве через хибернейт и с этим поковыряться
Брось каку. Учи нормально SQL, и забудь про хибернейт. Без нормального знания матчасти получишь несопровождаемую хрень. С хорошим знанием джавы и SQL тебе хибернейт не сдался вовек. Учи матчасть, postgresql+java,
или что там у вас вместо неё.
0
 Аватар для Kamazov
5 / 4 / 2
Регистрация: 05.01.2022
Сообщений: 399
17.08.2022, 12:44  [ТС]
Цитата Сообщение от oktogen Посмотреть сообщение
Брось каку. Учи нормально SQL, и забудь про хибернейт. Без нормального знания матчасти получишь несопровождаемую хрень. С хорошим знанием джавы и SQL тебе хибернейт не сдался вовек. Учи матчасть, postgresql+java,
или что там у вас вместо неё.
А чем тебе хибернейт не нравится? Да и в вакансиях фреймворки всегда требуются. Как-минимум спринг. Без знаний спринга, по-моему, ты вообще никому не всрался.
0
55 / 50 / 5
Регистрация: 30.06.2022
Сообщений: 251
17.08.2022, 14:44
Цитата Сообщение от Kamazov Посмотреть сообщение
А чем тебе хибернейт не нравится?
Там довольно подлые нюансы есть. И я как dba с ними сталкивался)))
Хотя если всё с умом делать...
0
 Аватар для Kamazov
5 / 4 / 2
Регистрация: 05.01.2022
Сообщений: 399
18.08.2022, 08:41  [ТС]
Цитата Сообщение от oktogen Посмотреть сообщение
Там довольно подлые нюансы есть. И я как dba с ними сталкивался)))
Хотя если всё с умом делать...
Так, ты давай не темни и не говори загадками. Выкладывай что за нюансы?
0
55 / 50 / 5
Регистрация: 30.06.2022
Сообщений: 251
19.08.2022, 23:05
Смотри чтоб в БД чрезмерной нормализации не было. И чтобы была возможность переписать сгенерённые хибернейтом запросы на более оптимальные. Или заменить вьюшками.
1
 Аватар для Kamazov
5 / 4 / 2
Регистрация: 05.01.2022
Сообщений: 399
23.08.2022, 14:47  [ТС]
Цитата Сообщение от oktogen Посмотреть сообщение
Смотри чтоб в БД чрезмерной нормализации не было.
Скажи пожалуйста, что значит чрезмерная нормализация?
0
55 / 50 / 5
Регистрация: 30.06.2022
Сообщений: 251
23.08.2022, 15:23
Цитата Сообщение от Kamazov Посмотреть сообщение
Скажи пожалуйста, что значит чрезмерная нормализация?
Ну, грубо говоря, тебе надо показать имя, телефон и электронную почту пользователя, и адрес в виде текста,
а для этого надо писать запрос с объединением 5-6 таблиц.
http://mymanual.narod.ru/micro... r6/6_4.htm
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.08.2022, 15:23

Сортировка с group by
SELECT count(*) AS total FROM oc_customer WHERE DATE(date_added) = DATE(NOW()) AND date_part('hour', date_added) = '21' GROUP BY...

Сортировка
А как сделать сортировку по возрастанию в поле со списком???

Сортировка
<SPAN id=ctl03_ctlPreview_lblPreviewMessage>в форме в процедуре обработки события Открыть задан порядок сортировки ...

Сортировка
Не знал куда написать так что извините: select * from SPYSOK_PRIBOROV where (INDEKS_KPA LIKE :Indeks or :Indeks is null) and...

Сортировка
что делает intersect? сортирует строки или столбцы. И пример какой нибудь пожалуйста)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
47
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru