Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
Есть две таблицы Clients сожержащая список пользователей и Transactions содержащая операции по каждому пользователю.
https://prnt.sc/ti6l6l ]
Нужно составить SQL запрос, который формирует отчет о состоянии счета каждого пользователя с учетом выполненных транзакций.

К сообщению приложен файл. Размер - 6Kb
15 июл 20, 13:56    [22167809]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
iivvvii,
Меня cмущает приписка === с учетом выполненных транзакций === это как ?
15 июл 20, 15:38    [22167897]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
iivvvii,
Как я понимаю в тот момент когда я запрашиваю данные с сервера может происжходить транзакция и может в это время произойти откакт транзакций ли исправление данных и запрос может вернуть неправильные данные.
Select * from Clients , Transactions where ID=UserID
А значит нужно как то проверить происходит ли сейчас транзакция или нет в момент запроса
15 июл 20, 16:58    [22167994]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
msLex
Member

Откуда:
Сообщений: 8065
iivvvii
iivvvii,
Как я понимаю в тот момент когда я запрашиваю данные с сервера может происжходить транзакция и может в это время произойти откакт транзакций ли исправление данных и запрос может вернуть неправильные данные.
Select * from Clients , Transactions where ID=UserID
А значит нужно как то проверить происходит ли сейчас транзакция или нет в момент запроса

Все нормальные РСУБД при запросе с уровнем изоляции RC не дадут тебе прочитать незакоммиченные данные. Т.е. простой запрос выдаст то, что вам нужно.
15 июл 20, 18:21    [22168087]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50765

Главное не путать транзакции СУБД и транзакции по счёту. Слова-то пишутся одинаково, но
это всё же разные вещи.

Posted via ActualForum NNTP Server 1.5

15 июл 20, 18:32    [22168100]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
msLex,
Спвсибо за ответ
15 июл 20, 19:12    [22168123]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62785
Блог
msLex
Т.е. простой запрос выдаст то, что вам нужно.

Насколько мне изменяет память, не совсем. Я здесь не готов уверенно утверждать, потому что в Oracle такой проблемы нет, но насколько я помню про RC, в блокировочниках он способен выдать при таком запросе неправильный результат. Нужен snapshot.
15 июл 20, 19:34    [22168139]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
Я хочу подсчитать сумму в столбце SendAmount таблицы Transactions но не всего столбца а только где
where Clients .ID=Transactions.UserID
А сч итается вся сумма столбца == что я не так делаю?

SELECT DISTINCT SUM (t.SendAmount)  AS oooo FROM Clients AS c , Transactions AS t WHERE c.ID=t.UserID
15 июл 20, 19:37    [22168141]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
iivvvii,

Вот написал такой запрос
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

Может ли этот вариант быть решением задачи ?
15 июл 20, 19:55    [22168159]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
нет не может на выходе запросса

теряется пользователь С по которому не было вычислений и записи в таблице Transactions

К сообщению приложен файл. Размер - 5Kb
15 июл 20, 20:08    [22168172]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
Как теперь пользователя С сюда прибавть? с его суммой общего счета Clients.Amount
15 июл 20, 20:40    [22168187]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28989
iivvvii,

clients left join transactions.
15 июл 20, 21:13    [22168196]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
kdv,
А подробней можно я тут не знаю что делать
Нужно найти того человека у которого счет не менялся он выпал из запроса по условию но думаю тут нужно делать через join
Как то находить его а потом соединять 2 запроса вместе
15 июл 20, 21:42    [22168211]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
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
[b]LEFT JOIN[/b] SELECT Clients.ID,Clients.Name,Clients.Amount FROM Clients
LEFT JOIN Transactions ON UserID = Clients.ID
WHERE Transactions.ID IS NULL;


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


сами по себе все запросы работают осталось соединить это вместе

Сообщение было отредактировано: 15 июл 20, 22:35
15 июл 20, 22:36    [22168237]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28989
iivvvii,

господи помилуй. у вас хоть какой-то учебник по sql есть?
15 июл 20, 23:14    [22168249]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
kdv,
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;


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

Наверно не самый лучший вариант
Хотелось бы услышать критику и ваши мнение как правильно написать этот запрос к моему заданию
16 июл 20, 00:01    [22168262]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
iivvvii,
Вот теперь все клиенты и их счета внесены в таблицу

К сообщению приложен файл. Размер - 2Kb
16 июл 20, 00:10    [22168264]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
iivvvii
Member

Откуда:
Сообщений: 54
iivvvii,
Сначала ищем все транзакции у человека суммируем их и отнимаем от общей суммы затем находим тех людей у которых не было транзакций в таблице так как они не попадают в список из за ограничения выборки== Потом все это соединяем и на выходе получаем == Имя человека и деньги у него на счету.
Как то так.
16 июл 20, 11:32    [22168435]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
mayton
Member

Откуда: loopback
Сообщений: 47946
А на какой СУБД вы эти запросы гоняете? MS? MySQL?
1 авг 20, 00:17    [22176442]     Ответить | Цитировать Сообщить модератору
 Re: SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4235
softwarer
msLex
Т.е. простой запрос выдаст то, что вам нужно.

Насколько мне изменяет память, не совсем. Я здесь не готов уверенно утверждать, потому что в Oracle такой проблемы нет, но насколько я помню про RC, в блокировочниках он способен выдать при таком запросе неправильный результат. Нужен snapshot.
Не только. Interbase, Firebird (меньше версии 4) - тоже.
2 авг 20, 05:39    [22176635]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить