У меня возникли проблемы с поиском подзапросов в Mysql.Довольно простые, это нормально, и большинство учебных пособий, которые я нахожу, редко выходят за рамки типичных:
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
Я пытаюсь извлечь из своей базы следующее (я постараюсь объяснить это безлюбой фон в нашей базе данных):
Получить список клиентов, принадлежащих к конкретному представителю, и общую сумму, потраченную в прошлом месяце (в одном столбце) и сумму, потраченную в текущем месяце, в другом столбце.
В результате это будет выглядеть примерно следующим образом:
ID | NAME | PREV MONTH | CUR MONTH
1 | foobar | £2300 | £1200
2 | barfoo | £1240 | £500
Запрос, который я использую для получения первой части данных, выглядит следующим образом:
SELECT c.id,c.name, SUM(co.invoicetotal) as total
FROM customers as c
JOIN customerorders as co on co.customer_id = c.id
WHERE c.salesrep_id = 24
AND co.orderdate BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND CURDATE()
GROUP by c.id
order by total desc
DATE_SUB можно заменитьпо фактическим датам, так как переменные php будут здесь в конце концов.В качестве примера это просто дает мне действительные данные.
Это дает мне, например:
ID | NAME | TOTAL
1 | foobar | £2300
2 | barfoo | £1240
Таким образом, в идеале, мой подзапрос должен быть точно таким же запросом, но с измененными датами,Я получаю ошибку #1242 - Subquery returns more than 1 row
.
Любые предложения или советы, пожалуйста?
Заранее спасибо.Rob