Есть три таблицы, в которых имеется поле ean со штрих-кодом карты
params - параметры корзины
discounts - данные по картам
checks - чеки, из которых необходимо вытащить сумму покупок в которых участвовала карта, указанная в корзине
В итоге надо получить одну запись из корзины, которая бы содержала в себе сумму покупок и данные дисконтной карты
А дальше получается так
запрос, который выбирает сумму покупок по заданной дисконтной карте
SELECT
COALESCE((SELECT sum(summa) FROM `checks` WHERE vozvrat=0 AND ean=d.ean),0)-
COALESCE((SELECT sum(summa) FROM `checks` WHERE vozvrat=1 AND ean=d.ean),0) as summa,
d.name, d.discount
FROM `discounts` d
left join `checks` c on d.ean = c.ean AND d.ean=c.ean WHERE d.ean="ШТРИХКОД" group by c.ean
пример
С ним все нормально, но когда попытался использовать его в качестве подзапроса
SELECT a.*,
b.summa, b.name, b.discount
FROM params a
LEFT JOIN (
SELECT
COALESCE((SELECT sum(summa) FROM `checks` WHERE vozvrat=0 AND ean=d.ean),0)-
COALESCE((SELECT sum(summa) FROM `checks` WHERE vozvrat=1 AND ean=d.ean),0) as summa,
d.name, d.discount
FROM `discounts` d
LEFT JOIN `checks` c ON d.ean = c.ean AND d.ean=c.ean WHERE d.ean=a.ean GROUP BY c.ean
) b ON b.ean=a.ean
WHERE a.somefield="somevalue"
получаю ошибку, поскольку (впрочем, логично) парсер не видит в подзапросе поле a.ean из основного запроса
Текст ошибки: #1054 - Неизвестный столбец 'a.ean' в 'where clause'
пример
Как правильно построить такой запрос?