powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Трёхэтажный запрос
17 сообщений из 17, страница 1 из 1
Трёхэтажный запрос
    #39001034
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот первоначальный запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
$sql ="SELECT `UserID`, `AffiliateID`, `Email`, `Password`, `CreatedDate`,
					`FirstName`, `LastName`, `Phone`, `PhonePrefix`, `Country`, `UserIP`,
                    (SELECT SUM(actualBalance) FROM `brandaccounts` WHERE brandaccounts.UserID = users.UserID) As `Balance`,	
                    (SELECT round((SUM(actualBalance) - SUM(initialBalance)),2) 
					FROM `brandaccounts` WHERE brandaccounts.UserID = users.UserID) As `Gain`,					
    				(SELECT count(*) FROM `brandaccounts` WHERE brandaccounts.UserID = users.UserID) AS `NoAcc`
					FROM `users` WHERE `PartnerID` = ".$_SESSION['PartnerID'];




Надо исправить подзапрос
Код: sql
1.
2.
 (SELECT round((SUM(actualBalance) - SUM(initialBalance)),2) 
					FROM `brandaccounts` WHERE brandaccounts.UserID = users.UserID) As `Gain`,	



Так чтобы он возвращал сумму всех полей `Outcome` из таблицы `requests` по тем записям где поле AccountID равен одному из подобных значений в записях таблицы brandaccounts где поле `UserID` равно текущему `UserID` из таблицы users

Тоесть у каждого users может быть несколько brandaccounts у каждого brandaccounts несколько requests. Мне надо сумировать все поля Outcome в подходящих записях из requests

помогите пожалуйста!!!! Надеюсь понятно обьяснил :))
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001047
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AreostarНадеюсь понятно обьяснилНет.
Где DDL таблиц? Где указание их связи? Где постановка задачи? Вот это твоё
AreostarТак чтобы он возвращал сумму всех полей `Outcome` из таблицы `requests` по тем записям где поле AccountID равен одному из подобных значений в записях таблицы brandaccounts где поле `UserID` равно текущему `UserID` из таблицы users

Тоесть у каждого users может быть несколько brandaccounts у каждого brandaccounts несколько requests. Мне надо сумировать все поля Outcome в подходящих записях из requestsэто же полный бред! особенно с учётом приведённых кодов... у тебя там таблицей requests даже не пахнет! "догадайся, мол, сама..." (с)
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001100
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

постараюсь дополнит.

Вот так выгдялит табличка users

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE IF NOT EXISTS `users` (
`UserID` int(11) NOT NULL,
  `AffiliateID` varchar(45) DEFAULT NULL,
  `PartnerID` int(11) NOT NULL,
  `Email` varchar(50) NOT NULL,
  `Password` varchar(50) NOT NULL,
  `CreatedDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `FirstName` varchar(45) DEFAULT NULL,
  `LastName` varchar(45) DEFAULT NULL,
  `Phone` varchar(10) DEFAULT NULL,
  `PhonePrefix` varchar(3) DEFAULT NULL,
  `Country` varchar(45) DEFAULT NULL,
  `UserIP` varchar(45) DEFAULT NULL
) ENGINE=InnoDB



Таблица brandaccount

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TABLE IF NOT EXISTS `brandaccounts` (
`AccountID` int(11) NOT NULL,
  `UserID` int(11) NOT NULL,
  `BrandID` int(11) NOT NULL,
  `LoginEmail` varchar(50) NOT NULL,
  `LoginID` int(11) NOT NULL,
  `LoginPassword` varchar(50) DEFAULT NULL,
  `initialBalance` double NOT NULL DEFAULT '0',
  `actualBalance` double NOT NULL DEFAULT '0',
  `IsAutoTrade` tinyint(1) NOT NULL DEFAULT '0',
  `MaxBet` int(11) NOT NULL DEFAULT '10',
  `MaxStopLoss` int(11) NOT NULL DEFAULT '0',
  `MaxTakeProfit` int(11) DEFAULT '0',
  `IsTestAccount` bit(1) NOT NULL,
  `VIPGroup` varchar(45) DEFAULT 'Regular'
) ENGINE=InnoDB 



Таблица requests


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE IF NOT EXISTS `requests` (
`RequestID` int(11) NOT NULL,
  `SignalID` int(11) NOT NULL,
  `AccountID` int(11) NOT NULL,
  `TradeType` varchar(20) NOT NULL,
  `Volume` double NOT NULL,
  `TicketID` int(11) NOT NULL,
  `Payout` int(11) NOT NULL,
  `Outcome` double DEFAULT NULL,
  `OpenPrice` double NOT NULL DEFAULT '0',
  `ClosePrice` double NOT NULL DEFAULT '0',
  `CloseTime` datetime DEFAULT NULL,
  `CreateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `SendEndTime` datetime NOT NULL,
  `RequestParams` text,
  `ResponseParams` text,
  `AssetsResponse` text,
  `TurboResponse` text,
  `DigitalResponse` text
) ENGINE=InnoDB 
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001139
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже лучше. Теперь - где связи?
brandaccounts.UserID = users.UserID мы уже видели. А как в эту кашу привязывается requests?
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001140
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaА как в эту кашу привязывается requests?Наверное, по AccountID.
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001166
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так точно
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001189
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AreostarТак точно
Я вообще-то ожидал ответ типа brandaccounts.AccountID = requests.AccountID... ну да ладно. Секция FROM определилась.

Код: sql
1.
2.
3.
4.
5.
6.
SELECT ???
FROM users, brandaccounts, requests
WHERE brandaccounts.UserID = users.UserID 
  AND brandaccounts.AccountID = requests.AccountID
  AND ???
???



Теперь осталось понять, по каким критериям отбор и что именно надо получить на выходе.
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001254
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Так чтобы он возвращал сумму всех полей `Outcome` из таблицы `requests` по тем записям где поле AccountID равен одному из подобных значений в записях таблицы brandaccounts где поле `UserID` равно текущему `UserID` из таблицы users
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001279
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostarполе AccountID равен одному из подобных значений в записях таблицы brandaccounts где поле `UserID` равно текущему `UserID` из таблицы users
Я не понимаю этой фразы.
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001284
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

записей из brandaccaund c таким же AccountID
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001301
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда тривиальное
Код: sql
1.
2.
3.
4.
5.
SELECT u.UserID, SUM(r.Outcome)
FROM users u, brandaccounts b, requests r
WHERE b.UserID = u.UserID 
  AND b.AccountID = r.AccountID
GROUP BY u.UserID
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001532
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, все же немного не так (дабы не задваивало):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select 
  g.UserID,
  sum(g.actualBalance)b_actualBalance, 
  sum(g.r_Outcome)br_Outcome
from (
  select 
    u.UserID, 
    b.AccountID, b.actualBalance, 
    sum(r.Outcome)r_Outcome
  from users u
  left join brandaccounts b on b.UserID=u.UserID
  left join requests r on r.AccountID=b.AccountID
  group by u.UserID, b.AccountID
  )g
group by g.UserID
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001592
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007дабы не задваивало[src]
Безнадёжно... лучше обрати внимание на то, что в таблицах даже первичного ключа нет. Все твои дополнения ничуть не улучшат ситуации в этом бардаке.
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001643
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Базу строил один удодю а исправлять времяни нет так как уже многое написано(и не только мной)
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001759
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaв таблицах даже первичного ключа нетНе верю :)
Думаю, почикано в посте для краткости, вместе с остальными индексами и FK
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39001788
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007, ну да, индексы почикал, а хренову гору неприделашных полей - нет? Можно, я посомневаюсь немножко?
...
Рейтинг: 0 / 0
Трёхэтажный запрос
    #39002059
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за советы!
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Трёхэтажный запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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