Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2021, 23:44   #1
Шамиль99
Новичок
Джуниор
 
Регистрация: 17.05.2021
Сообщений: 6
По умолчанию Запрос на Join

Всем привет!

Помогите пожалуйста в написании запроса. Сделал маленькую БД, но с запросом промучался 12 часов, так и не смог((

Задача сформировать следующий запрос: Список лиц, у которых есть и кредит и депозит, причем кредит больше депозита. Вывод: Клиент, сумма депозитов, сумма кредитов.
Вложения
Тип файла: rar Database2.rar (29.6 Кб, 2 просмотров)
Шамиль99 вне форума Ответить с цитированием
Старый 18.05.2021, 09:09   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

создаем
1. запрос. кредиты(их сумма) по лицам (sum + group by )
2. запрос. депозиты(их сумма) по лицам (аналогично)
3. запрос. кредит по лицам inner join депозит по лицам ON депозит на тоже лицо что и кредит
4. фильтр результата (where) сумма кредита > сумма депозита
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.05.2021, 11:40   #3
Шамиль99
Новичок
Джуниор
 
Регистрация: 17.05.2021
Сообщений: 6
По умолчанию

Спасибо за подсказку, сейчас попробую.

Пропал 2-й клиент, он особенный, т.к. именно у него в отличии от других, есть 2 депозита и 2 кредита. Как его корректно показать не понимаю.
Изображения
Тип файла: png рез.png (51.2 Кб, 24 просмотров)

Последний раз редактировалось Шамиль99; 18.05.2021 в 12:10.
Шамиль99 вне форума Ответить с цитированием
Старый 18.05.2021, 11:41   #4
Шамиль99
Новичок
Джуниор
 
Регистрация: 17.05.2021
Сообщений: 6
По умолчанию

evg_m,

Спасибо за подсказку, но после этих манипуляций у меня исчезает 2 клиент

select кредиты.Физик AS Клиент, депозиты.сумма AS Сумма_депозитов, кредиты.сумма AS Сумма_кредитов
from кредиты inner join депозиты on кредиты.Физик=депозиты.Физик

where депозиты.сумма in
(SELECT sum(сумма)
FROM депозиты
where сумма>0
group by Физик

and

кредиты.сумма in (
SELECT sum(сумма)
FROM кредиты
group by Физик

and кредиты.сумма > депозиты.сумма
;
Изображения
Тип файла: png рез.png (51.2 Кб, 25 просмотров)
Шамиль99 вне форума Ответить с цитированием
Старый 18.05.2021, 14:20   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
1. запрос. кредиты(их сумма) по лицам (sum + group by )
Код:
SELECT sum(сумма), физик
FROM кредиты
group by Физик
Цитата:
3. запрос. кредит по лицам inner join депозит по лицам ON депозит на тоже лицо что и кредит
Код:
select 
from ( select sum(сумма), физик from кредиты group by физик ) as кредитсум
inner join (select sum(суммма), физик from.... group by физик ) as депозитсум  
ON кредитсум.физик =депозитсум.физик
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 18.05.2021 в 14:25.
evg_m вне форума Ответить с цитированием
Старый 18.05.2021, 14:38   #6
Шамиль99
Новичок
Джуниор
 
Регистрация: 17.05.2021
Сообщений: 6
По умолчанию

evg_m,
на этот запрос

select кредиты.Физик AS Клиент, депозиты.сумма AS Сумма_депозитов, кредиты.сумма AS Сумма_кредитов
from
(select sum(сумма), физик
from кредиты
group by физик ) as кредитсум
inner join
(select sum(сумма), физик
from депозиты
group by физик ) as депозитсум
ON кредитсум.физик =депозитсум.физик
where кредиты.сумма > депозиты.сумма
;

выходит сообщение с просьбой ввести размер депозита и кредита
Изображения
Тип файла: png рез 2.png (3.1 Кб, 23 просмотров)
Шамиль99 вне форума Ответить с цитированием
Старый 18.05.2021, 15:04   #7
Шамиль99
Новичок
Джуниор
 
Регистрация: 17.05.2021
Сообщений: 6
По умолчанию

Когда я использую такой запрос, то получается вот что:

select кредиты.Физик AS Клиент, депозиты.сумма AS Сумма_депозитов, кредиты.сумма AS Сумма_кредитов
from кредиты inner join депозиты on кредиты.Физик=депозиты.Физик
WHERE кредиты.сумма > депозиты.сумма
;


Что мне следует изменить в коде, чтобы у 2 клиента в поле Сумма_депозитов было 650т, а в кредите 1,1м ?

Если юзать агрегатные ф-ции и group by по клиентам, то у 2 клиента результаты дублируются и складываются
Изображения
Тип файла: png рез 3.png (14.7 Кб, 0 просмотров)

Последний раз редактировалось Шамиль99; 18.05.2021 в 15:06.
Шамиль99 вне форума Ответить с цитированием
Старый 18.05.2021, 22:36   #8
Шамиль99
Новичок
Джуниор
 
Регистрация: 17.05.2021
Сообщений: 6
По умолчанию

уже разобрался
Шамиль99 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос JOIN ponam2016 SQL, базы данных 3 16.06.2016 15:22
Запрос к БД с использованием LEFT JOIN MaGWaY_minsk SQL, базы данных 6 07.02.2014 15:24
запрос с left join KatrinSecret SQL, базы данных 2 18.01.2012 22:31
Join(запрос) clbman SQL, базы данных 8 14.06.2010 15:52
не получается запрос с inner join :mad: Только_Учусь SQL, базы данных 16 21.07.2008 09:40