Как я могу использовать имя внешней таблицы в подзапросе? - PullRequest
0 голосов
/ 13 февраля 2019

Вот мой запрос:

SET @date = '2019-02-12';

SELECT lds.product_id, sum(lds.amount) amount, lpp.price
FROM `log_daily_stock` lds
 JOIN (SELECT * FROM log_product_prices
       WHERE created_at <= @date
         AND product_id = lds.product_id          -- the problem is here
       ORDER BY created_at DESC) lpp
 ON lpp.product_id = lds.product_id
WHERE branch_id in (1,2)
  AND stock_date = @date
GROUP BY product_id, price

Как я прокомментировал в запросе, lds.product_id не известен как столбец и выдает:

# 1054 -Неизвестный столбец 'lds.product_id' в 'предложении where'

Любая идея, как я могу это исправить?


Все, что я пытаюсь сделать, это получить новейшиецена на товар.Вот почему я заказал created_at как DESC, а затем LIMIT 1.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Один метод является коррелированным подзапросом:

SELECT lds.product_id, sum(lds.amount) as amount, 
       (SELECT lpp.price
        FROM log_product_prices lpp
        WHERE lpp.created_at <= @date AND
              lpp.product_id = lds.product_id  
        ORDER BY created_at DESC
       ) as price_asof_date       
FROM `log_daily_stock` lds
WHERE branch_id in (1, 2) AND stock_date = @date
GROUP BY product_id, price
0 голосов
/ 13 февраля 2019

вы можете попробовать как ниже

SELECT lds.product_id, sum(lds.amount) amount, lpp.price
FROM `log_daily_stock` lds
 JOIN (SELECT * FROM log_product_prices
       WHERE created_at <= @date            
       ) lpp
 ON lpp.product_id = lds.product_id
WHERE branch_id in (1,2)
  AND stock_date = @date
GROUP BY lds.product_id, lpp.price
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...