Сумма MySQL из двух таблиц - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь суммировать ЦЕНУ из двух таблиц, которые связаны другой таблицей.

tblcustomer   tblappointment   tblfinances
----------    --------------   -----------
CustomerID    AppointmentID    FinancesID
Name          CustomerID       CustomerID
              Price            Price

Я пробую этот код, но получаю ошибку # 1064

SELECT c.CustomerID, (1.p1+2.p2) AS total_price FROM tblcustomer c 
LEFT JOIN (SELECT CustomerID, SUM(Price) p1 FROM tblappointment GROUP BY CustomerID) 1 ON 1.CustomerID = c.CustomerID
LEFT JOIN (SELECT CustomerID, SUM(Price) p2 FROM tblfinances GROUP BY CustomerID) 2 ON 2.CustomerID = c.CustomerID;

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Я не рекомендую использовать псевдонимы, которые начинаются с цифр или начинаются с них. Что еще более важно, вы должны признать, что JOIN s могут не совпадать - именно поэтому вы в первую очередь используете внешние объединения.

Итак:

SELECT c.CustomerID,
       (COALESCE(a.price, 0) + COALESCE(f.price, 0)) AS total_price
FROM tblcustomer c LEFT JOIN
     (SELECT CustomerID, SUM(Price) as price
      FROM tblappointment
      GROUP BY CustomerID
     ) a
     ON a.CustomerID = c.CustomerID LEFT JOIN
     (SELECT CustomerID, SUM(Price) as price
      FROM tblfinances
      GROUP BY CustomerID
     ) f
     ON f.CustomerID = c.CustomerID;
0 голосов
/ 12 января 2019

Вам нужно исправить алиасы следующим образом

SELECT c.CustomerID, (t1.p1+t2.p2) AS total_price 
  FROM tblcustomer c 
  LEFT JOIN (SELECT CustomerID, SUM(Price) as p1 
               FROM tblappointment 
              GROUP BY CustomerID) t1 ON t1.CustomerID = c.CustomerID
  LEFT JOIN (SELECT CustomerID, SUM(Price) as p2 
               FROM tblfinances 
              GROUP BY CustomerID) t2 ON t2.CustomerID = c.CustomerID;

, поскольку псевдонимы не могут быть полностью числовыми выражениями, за исключением того, что они заключены в кавычки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...