У меня есть 2 таблицы companies
и invoices
Я хочу выбрать все компании с их последней ценой счета. Я не понимаю, как это работает. Вот что я попробовал:
SELECT *
FROM companies H INNER JOIN
invoices V
ON H.company_id = V.BC_ID
WHERE V.ISCOMMISSIE = 0 AND
V.DATE = (SELECT MAX(v2.DATE) FROM invoices v2 WHERE v2.BC_ID = V.BC_ID AND v2.ISCOMMISSIE = 0);
Но запрос загружается очень долго, и я не знаю почему. Структура выглядит следующим образом:
компаний
company_id | company_name |
1 | company 1 |
2 | company 2 |
счета
invoice_id | BC_ID | DATE | ISCOMMISSIE | price |
1 | 2 | 2020-01-01 | 0 | 340,40 |
2 | 1 | 2020-01-11 | 0 | 240,40 |
3 | 1 | 2020-01-08 | 0 | 250,30 |
4 | 2 | 2020-01-18 | 0 | 150,30 |
5 | 2 | 2020-01-19 | 1 | 150,30 |
BC_ID
является такие же как company_id
и ISCOMMISSIE
должны быть 0. Я хочу выбрать самую последнюю дату. У кого-нибудь есть идея, как это сделать, а также сделать запрос максимально быстрым? http://sqlfiddle.com/#! 9 / 2fc3a / 1