SELECT
patrimoine_instruments.`instrument` as actif,
SUM(patrimoine_transactions.`quantite`) as quantite,
(SELECT quote.last FROM quote HAVING quote.close_datetime = MAX(quote.close_datetime)) as valeur,
MAX(quote.close_datetime) as date
FROM `patrimoine_transactions`
LEFT JOIN patrimoine_instruments ON patrimoine_transactions.instrument = patrimoine_instruments.instrument_id
LEFT JOIN quote ON patrimoine_instruments.instrument_ISIN = quote.quote_ISIN
GROUP BY patrimoine_instruments.`instrument`
HAVING SUM(`quantite`) 0
ORDER BY `patrimoine_instruments`.`instrument` ASC;
Но если в таблице котировок есть данные для более чем 1 инструмента, при возврате возвращаемые данные будут неверными.
Где-то должно быть чего-то не хватает (WHERE или HAVING для пример). Есть у кого-нибудь идеи?
У меня есть 3 таблицы: [list] [*]patrimoine_instruments(instrument_id, Instrument, Instrument_ISIN) [*]patrimoine_transactions(transaction_id, Instrument , количество, значение) [*]quote(quote, quote_ISIN, close_datetime, последнее) [/list] I пытаюсь получить портфель на сегодняшний день: [list] [*]перечисляю все инструменты, для которых количество не равно 0 [*] с их соответствующим количеством на сегодняшний день для каждого инструмента. [*]с их самым последним значением из таблицы котировок для каждого инструмента. [*]с самой последней датой от таблица котировок для каждого инструмента [/list] Ниже SELECT запрос работает нормально, если в таблице котировок есть данные только для 1 инструмента: [code]SELECT patrimoine_instruments.`instrument` as actif, SUM(patrimoine_transactions.`quantite`) as quantite, (SELECT quote.last FROM quote HAVING quote.close_datetime = MAX(quote.close_datetime)) as valeur, MAX(quote.close_datetime) as date FROM `patrimoine_transactions` LEFT JOIN patrimoine_instruments ON patrimoine_transactions.instrument = patrimoine_instruments.instrument_id LEFT JOIN quote ON patrimoine_instruments.instrument_ISIN = quote.quote_ISIN GROUP BY patrimoine_instruments.`instrument` HAVING SUM(`quantite`) 0 ORDER BY `patrimoine_instruments`.`instrument` ASC; [/code] Но если в таблице котировок есть данные для более чем 1 инструмента, при возврате возвращаемые данные будут неверными. Где-то должно быть чего-то не хватает (WHERE или HAVING для пример). Есть у кого-нибудь идеи?