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

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

Насколько мне изменяет память, не совсем. Я здесь не готов уверенно утверждать, потому что в Oracle такой проблемы нет, но насколько я помню про RC, в блокировочниках он способен выдать при таком запросе неправильный результат. Нужен snapshot.
...
Рейтинг: 0 / 0
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
    #39980115
iivvvii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хочу подсчитать сумму в столбце 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
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
    #39980128
iivvvii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
    #39980139
iivvvii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет не может на выходе запросса

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

clients left join transactions.
...
Рейтинг: 0 / 0
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
    #39980167
iivvvii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,
А подробней можно я тут не знаю что делать
Нужно найти того человека у которого счет не менялся он выпал из запроса по условию но думаю тут нужно делать через join
Как то находить его а потом соединять 2 запроса вместе
...
Рейтинг: 0 / 0
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
    #39980182
iivvvii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
    #39980189
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iivvvii,

господи помилуй. у вас хоть какой-то учебник по sql есть?
...
Рейтинг: 0 / 0
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
    #39980198
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;



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

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

Насколько мне изменяет память, не совсем. Я здесь не готов уверенно утверждать, потому что в Oracle такой проблемы нет, но насколько я помню про RC, в блокировочниках он способен выдать при таком запросе неправильный результат. Нужен snapshot.
Не только. Interbase, Firebird (меньше версии 4) - тоже.
...
Рейтинг: 0 / 0
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
    #39987517
Фотография miceonly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
    #39997301
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
22 сообщений из 22, страница 1 из 1
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / SQL Базы данных == составить SQL запрос, который формирует отчет о состоянии счета
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (2): Анонимы (2)
Пользователи онлайн (12): Анонимы (8), Bing Bot, Yandex Bot, Google Bot 1 мин., CerebroSQL 3 мин.
x
x
Закрыть


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