Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > НЕ существующая ошибка


Автор: Areostar 2.8.2015, 16:41
запрос:
Код

"SELECT `BrandID`, `BrandName`, `AffiliateID`, `UserName`, `Password`, `MinPayout`,
                            `BrandAPI`, `IsVisible`, `Stars`, `Priority`,  `BrandURL`, `BrandImageUrl`,
                            (SELECT COUNT(`AccountID`) FROM `brandaccounts` WHERE `brandaccounts`.`BrandID` = `brands`.`BrandID` ) AS `Leads`,
                            (SELECT COUNT(`AccountID`) FROM `deposits` WHERE deposits.paymentMethod != 'Bonus') AS `FTD`, 
                            (SELECT round(SUM(actualBalance),2) FROM `brandaccounts` WHERE brandaccounts.BrandID = brands.BrandID) As `Balance`,    
                            (SELECT round(SUM(requests.Outcome),2) FROM requests, brandaccounts
                            WHERE brandaccounts.BrandID = brands.BrandID AND brandaccounts.AccountID = requests.AccountID) As `Gain`
                            FROM `brands` WHERE `PlatformID` = :PlatformID && `PartnerID` = :PartnerID"




так работает. Добавляю условие:
Код


"SELECT `BrandID`, `BrandName`, `AffiliateID`, `UserName`, `Password`, `MinPayout`,
                            `BrandAPI`, `IsVisible`, `Stars`, `Priority`,  `BrandURL`, `BrandImageUrl`,
                            (SELECT COUNT(`AccountID`) FROM `brandaccounts` WHERE `brandaccounts`.`BrandID` = `brands`.`BrandID` ) AS `Leads`,
                            (SELECT COUNT(`AccountID`) FROM `deposits` WHERE deposits.paymentMethod != 'Bonus' && deposits.AccountID = brandaccounts.AccountID) AS `FTD`, 
                            (SELECT round(SUM(actualBalance),2) FROM `brandaccounts` WHERE brandaccounts.BrandID = brands.BrandID) As `Balance`,    
                            (SELECT round(SUM(requests.Outcome),2) FROM requests, brandaccounts
                            WHERE brandaccounts.BrandID = brands.BrandID AND brandaccounts.AccountID = requests.AccountID) As `Gain`
                            FROM `brands` WHERE `PlatformID` = :PlatformID && `PartnerID` = :PartnerID"




получаю ощибку:



автор
Цитата


PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'brandaccounts.AccountID' in 'where clause'' in / 



Но у меня нигде нет 'brandaccounts.AccountID'???

В чём дело?? 

Автор: ТоляМБА 2.8.2015, 17:40
Цитата(Areostar @  2.8.2015,  18:41 Найти цитируемый пост)
Но у меня нигде нет 'brandaccounts.AccountID'???

В 4-й строке - в предложении where участвует столбец из таблицы brandaccounts не указанной во from.

Автор: Areostar 3.8.2015, 09:20
переправил вот так 

 
Код

(SELECT COUNT(`deposits`.`AccountID`) FROM `deposits`, `brandaccounts` WHERE deposits.paymentMethod != 'Bonus'
    && brandaccounts.BrandID = brands.BrandID && deposits.AccountID = brandaccounts.AccountID) AS `FTD` 


но как сделать так чтоб если в таблице deposits у какого либо AccountID есть запись которые deposits.paymentMethod != 'Bonus' то в результат добавляется 1 вне зависимости сколько их? 

Автор: ТоляМБА 3.8.2015, 09:59
Код
SELECT if(COUNT(`deposits`.`AccountID`)=0,0,1) FROM ...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)