Гость
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета / 22 сообщений из 22, страница 1 из 1
15.07.2020, 13:56
    #39979926
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
Есть две таблицы Clients сожержащая список пользователей и Transactions содержащая операции по каждому пользователю.
https://prnt.sc/ti6l6l ]
Нужно составить SQL запрос, который формирует отчет о состоянии счета каждого пользователя с учетом выполненных транзакций.
...
Рейтинг: 0 / 0
15.07.2020, 15:38
    #39979985
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
iivvvii,
Меня cмущает приписка === с учетом выполненных транзакций === это как ?
...
Рейтинг: 0 / 0
15.07.2020, 16:58
    #39980043
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
iivvvii,
Как я понимаю в тот момент когда я запрашиваю данные с сервера может происжходить транзакция и может в это время произойти откакт транзакций ли исправление данных и запрос может вернуть неправильные данные.
Select * from Clients , Transactions where ID=UserID
А значит нужно как то проверить происходит ли сейчас транзакция или нет в момент запроса
...
Рейтинг: 0 / 0
15.07.2020, 18:21
    #39980078
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
iivvvii
iivvvii,
Как я понимаю в тот момент когда я запрашиваю данные с сервера может происжходить транзакция и может в это время произойти откакт транзакций ли исправление данных и запрос может вернуть неправильные данные.
Select * from Clients , Transactions where ID=UserID
А значит нужно как то проверить происходит ли сейчас транзакция или нет в момент запроса

Все нормальные РСУБД при запросе с уровнем изоляции RC не дадут тебе прочитать незакоммиченные данные. Т.е. простой запрос выдаст то, что вам нужно.
...
Рейтинг: 0 / 0
15.07.2020, 18:32
    #39980086
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
Главное не путать транзакции СУБД и транзакции по счёту. Слова-то пишутся одинаково, но
это всё же разные вещи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.07.2020, 19:12
    #39980102
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
msLex,
Спвсибо за ответ
...
Рейтинг: 0 / 0
15.07.2020, 19:34
    #39980113
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
msLex
Т.е. простой запрос выдаст то, что вам нужно.

Насколько мне изменяет память, не совсем. Я здесь не готов уверенно утверждать, потому что в Oracle такой проблемы нет, но насколько я помню про RC, в блокировочниках он способен выдать при таком запросе неправильный результат. Нужен snapshot.
...
Рейтинг: 0 / 0
15.07.2020, 19:37
    #39980115
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
Я хочу подсчитать сумму в столбце SendAmount таблицы Transactions но не всего столбца а только где
where Clients .ID=Transactions.UserID
А сч итается вся сумма столбца == что я не так делаю?

Код: sql
1.
SELECT DISTINCT SUM (t.SendAmount)  AS oooo FROM Clients AS c , Transactions AS t WHERE c.ID=t.UserID
...
Рейтинг: 0 / 0
15.07.2020, 19:55
    #39980128
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
iivvvii,

Вот написал такой запрос
SQLВыделить код
1
Код: sql
1.
SELECT DISTINCT c.Name AS Имя, c.Amount - SUM (t.SendAmount)  AS Сумма FROM Clients AS c , Transactions AS t WHERE c.ID=t.UserID GROUP BY c.Amount,c.Name


Может ли этот вариант быть решением задачи ?
...
Рейтинг: 0 / 0
15.07.2020, 20:08
    #39980139
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
нет не может на выходе запросса

теряется пользователь С по которому не было вычислений и записи в таблице Transactions
...
Рейтинг: 0 / 0
15.07.2020, 20:40
    #39980149
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
Как теперь пользователя С сюда прибавть? с его суммой общего счета Clients.Amount
...
Рейтинг: 0 / 0
15.07.2020, 21:13
    #39980157
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
iivvvii,

clients left join transactions.
...
Рейтинг: 0 / 0
15.07.2020, 21:42
    #39980167
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
kdv,
А подробней можно я тут не знаю что делать
Нужно найти того человека у которого счет не менялся он выпал из запроса по условию но думаю тут нужно делать через join
Как то находить его а потом соединять 2 запроса вместе
...
Рейтинг: 0 / 0
15.07.2020, 22:36
    #39980182
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
Код: sql
1.
2.
3.
4.
SELECT DISTINCT c.Name AS Имя, c.Amount - SUM (t.SendAmount) AS Сумма FROM Clients AS c , Transactions AS t WHERE c.ID=t.UserID GROUP BY c.Amount,c.Name
LEFT JOIN SELECT Clients.ID,Clients.Name,Clients.Amount FROM Clients
LEFT JOIN Transactions ON UserID = Clients.ID
WHERE Transactions.ID IS NULL;



Исправте пожалуйста == где LEFT JOIN он находится первым в запросе показывает на ошибку


сами по себе все запросы работают осталось соединить это вместе
...
Рейтинг: 0 / 0
15.07.2020, 23:14
    #39980189
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
iivvvii,

господи помилуй. у вас хоть какой-то учебник по sql есть?
...
Рейтинг: 0 / 0
16.07.2020, 00:01
    #39980198
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
kdv,
Код: sql
1.
2.
3.
4.
5.
SELECT  c.Name AS Имя, c.Amount - SUM (t.SendAmount)  AS Сумма FROM Clients AS c 
JOIN Transactions as t ON UserID =  c.ID GROUP BY c.Amount,c.Name
union  SELECT cc.Name,cc.Amount FROM Clients as cc
LEFT JOIN Transactions as tt ON tt.UserID = cc.ID
WHERE tt.ID IS NULL;



Вот что у меня получилось

Наверно не самый лучший вариант
Хотелось бы услышать критику и ваши мнение как правильно написать этот запрос к моему заданию
...
Рейтинг: 0 / 0
16.07.2020, 00:10
    #39980199
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
iivvvii,
Вот теперь все клиенты и их счета внесены в таблицу
...
Рейтинг: 0 / 0
16.07.2020, 11:32
    #39980330
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
iivvvii,
Сначала ищем все транзакции у человека суммируем их и отнимаем от общей суммы затем находим тех людей у которых не было транзакций в таблице так как они не попадают в список из за ограничения выборки== Потом все это соединяем и на выходе получаем == Имя человека и деньги у него на счету.
Как то так.
...
Рейтинг: 0 / 0
01.08.2020, 00:17
    #39985715
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
А на какой СУБД вы эти запросы гоняете? MS? MySQL?
...
Рейтинг: 0 / 0
02.08.2020, 05:39
    #39985862
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
softwarer
msLex
Т.е. простой запрос выдаст то, что вам нужно.

Насколько мне изменяет память, не совсем. Я здесь не готов уверенно утверждать, потому что в Oracle такой проблемы нет, но насколько я помню про RC, в блокировочниках он способен выдать при таком запросе неправильный результат. Нужен snapshot.
Не только. Interbase, Firebird (меньше версии 4) - тоже.
...
Рейтинг: 0 / 0
07.08.2020, 15:10
    #39987517
miceonly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
iivvvii
kdv,
Код: sql
1.
2.
3.
4.
5.
SELECT  c.Name AS Имя, c.Amount - SUM (t.SendAmount)  AS Сумма FROM Clients AS c 
JOIN Transactions as t ON UserID =  c.ID GROUP BY c.Amount,c.Name
union  SELECT cc.Name,cc.Amount FROM Clients as cc
LEFT JOIN Transactions as tt ON tt.UserID = cc.ID
WHERE tt.ID IS NULL;




Вот что у меня получилось

Наверно не самый лучший вариант
Хотелось бы услышать критику и ваши мнение как правильно написать этот запрос к моему заданию

Для чего этот огород с union?
...
Рейтинг: 0 / 0
10.09.2020, 14:45
    #39997301
Валерий Юринский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
iivvvii
kdv,
Код: sql
1.
2.
3.
4.
5.
SELECT  c.Name AS Имя, c.Amount - SUM (t.SendAmount)  AS Сумма FROM Clients AS c 
JOIN Transactions as t ON UserID =  c.ID GROUP BY c.Amount,c.Name
union  SELECT cc.Name,cc.Amount FROM Clients as cc
LEFT JOIN Transactions as tt ON tt.UserID = cc.ID
WHERE tt.ID IS NULL;



Вот что у меня получилось

Наверно не самый лучший вариант
Хотелось бы услышать критику и ваши мнение как правильно написать этот запрос к моему заданию


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT c.Name AS Имя
     , c.Amount - SUM (t.SendAmount) AS Сумма 
FROM Clients AS c 
     JOIN 
     Transactions as t ON UserID =  c.ID 
GROUP BY c.Amount,c.Name
union  
SELECT cc.Name, cc.Amount 
FROM Clients as cc
     LEFT JOIN 
     Transactions as tt ON tt.UserID = cc.ID
WHERE tt.ID IS NULL;


Отформатировал ваш код, чтобы его можно было читать, не ломая глаза.
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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