Кто-нибудь знает, почему в приложении C ++ Builder Firemonkey TSQLQuery не может получить поле SubQuery внутри выбора. Пожалуйста, смотрите мой код ниже, так как я не могу получить SPrice1 и SPrice2, так как он говорит, что его не существует.
Примечание: я использую C ++ Builder 10.3 Update1
Примечание: Точно такой же SQL прекрасно работает в приложениях c# и других инструментах управления Sqlite.
myQuery->Close();
myQuery->SQL->Text = "SELECT P.Description1,P.Code,P.Notes,L.InvoiceDate,";
myQuery->SQL->Add("(SELECT Price FROM Prices WHERE ProductID=P.ProductID AND PriceID=:pPriceID1) AS SPrice1 ");
myQuery->SQL->Add("(SELECT Price FROM Prices WHERE ProductID=P.ProductID AND PriceID=:pPriceID2) AS SPrice2 ");
myQuery->SQL->Add(" FROM Products P LEFT OUTER JOIN LastPrices L ON L.ProductID=P.ProductID AND L.CustomerID=:pCustomerID WHERE P.ProductID > 0 AND P.Description LIKE '%TEST%'");
myQuery->ParamByName("pPriceID1")->AsInteger = PriceID1 ;
myQuery->ParamByName("pPriceID2")->AsInteger = PriceID2 ;
myQuery->ParamByName("pCustomerID")->AsInteger = CustomerID;
myQuery->Open();
Я даже пытался сделать так, чтобы они были в LEFT JOINED, и это работало только для одного запроса, получая только SPrice1, но не SPrice2
myQuery->Close();
myQuery->SQL->Text = "SELECT P.Description1,P.Code,P.Notes,L.InvoiceDate,P1.Price AS SPrice1,P2.Price AS SPrice2 ";
myQuery->SQL->Add(" FROM Products P LEFT OUTER JOIN LastPrices L ON L.ProductID=P.ProductID AND L.CustomerID=:pCustomerID ");
myQuery->SQL->Add(" LEFT JOIN Prices P1 ON P1.ProductID=P.ProductID AND P2.PriceID=:pPriceID1 ")
myQuery->SQL->Add(" LEFT JOIN Prices P2 ON P2.ProductID=P.ProductID AND P2.PriceID=:pPriceID2 ")
myQuery->SQL->Add("WHERE P.ProductID > 0 AND P.Description LIKE '%TEST%'");
myQuery->ParamByName("pPriceID1")->AsInteger = PriceID1 ;
myQuery->ParamByName("pPriceID2")->AsInteger = PriceID2 ;
myQuery->ParamByName("pCustomerID")->AsInteger = CustomerID;
myQuery->Open():