Это вопрос, касающийся запросов в MySQL.В качестве примера давайте воспользуемся системой, которая отслеживает продажи автомобилей.Есть таблица с salespersons
, таблица с sales
и таблица, которая связывает их.В большинстве случаев с каждой продажей связан только один человек.Но иногда несколько человек связаны с продажей.
Table sales
id | carId | date
---+-------+-----------
1 | 2 | 11-01-2011
2 | 8 | 11-02-2011
3 | 5 | 11-05-2011
Table link
personId | saleId
---------+-------
2 | 1
2 | 2
1 | 3
2 | 3
Table salesperson
id | name | age
---+-------+----
1 | Barry | 25
2 | Sara | 32
Чтобы получить данные, я хочу показать информацию о каждой продаже на веб-странице.Но когда несколько человек связаны с продажей, это становится проблематичным.Я попытался применить приведенный ниже запрос в своем коде, после чего PHP обрабатывает исключение, когда несколько человек связаны с одной продажей, но из-за длины таблицы продаж выполнение запроса ниже занимает слишком много времени:
SELECT count(personId) as amount, carId, date
FROM link
JOIN salesperson ON link.personId = salesperson.id
JOIN sales ON sales.id = link.saleId
GROUP BY link.saleId
Есть ли более эффективный запрос, который можно использовать?Кстати, индексация таблицы уже сделана.