Hello,
I want to build the following query in Laravel style.
SELECT au.username, COUNT(a.id) as TotalTrx, SUM(a.amount) AS totalSales
FROM app_users AS au
LEFT JOIN accounts AS a ON (au.id=a.user_id)
WHERE
a.status=0 AND a.source=3 AND (au.parent_id = 10001 OR au.id= 10001 )
GROUP BY au.username ORDER BY totalSales DESC
here app_users table has a User model, accounts has a Account model.
Relationships:
User hasMany Account and Account belongsTo User.
What would be the simplest way to get the results?
Update:
I want to rebuild this query too!
SELECT totalS.date AS finalDate, IFNULL(totalS.total_sales,0) AS finalSales, IFNULL(totalP.total_payments,0) AS finalPayments
FROM
(
SELECT c.datefield AS date, IFNULL(SUM(a.epoints),0) AS total_sales
FROM accounts AS a
RIGHT JOIN calendar AS c ON (DATE(FROM_UNIXTIME(jtime)) = c.datefield)
WHERE (
c.datefield BETWEEN
(SELECT MIN(DATE(FROM_UNIXTIME(jtime))) FROM accounts)
AND
(SELECT MAX(DATE(FROM_UNIXTIME(jtime))) FROM accounts)
)
AND
a.source=3 AND a.status=0
GROUP BY date
ORDER BY date DESC
) AS totalS
LEFT JOIN
(
SELECT c.datefield AS date, IFNULL(SUM(a.epoints),0) AS total_payments
FROM accounts AS a
RIGHT JOIN calendar AS c ON (DATE(FROM_UNIXTIME(jtime)) = c.datefield)
WHERE (
c.datefield BETWEEN
(SELECT MIN(DATE(FROM_UNIXTIME(jtime))) FROM accounts)
AND
(SELECT MAX(DATE(FROM_UNIXTIME(jtime))) FROM accounts)
)
AND
a.source=1 AND a.status=0 AND fromid='ADMIN'
GROUP BY date
ORDER BY date DESC
) AS totalP ON (totalS.date=totalP.date)
WHERE totalS.date BETWEEN '2015-01-15' AND '2015-01-26'
ORDER BY finalDate ASC;