У меня есть следующие 3 таблицы: unit, stage, stats.SQL-запрос для нескольких таблиц и операций в MySQL
unit stage
+----+--------+ +----+-------+---------------------+
| id | status | | id |unit_id| date |
+----+--------+ +----+-------+---------------------+
| 1 | 2 | | 1 | 2 | 2013-11-22 00:00:00 |
| 2 | 3 | | 2 | 2 | 2013-11-26 12:00:00 |
| 3 | 3 | | 3 | 3 | 2013-10-11 00:00:00 |
| 4 | 0 | | 4 | 1 | 2013-12-29 00:00:00 |
+----+--------+ +----+-------+---------------------+
stats
+----+----------+---------------------+-------+
| id | stage_id | date | clicks|
+----+----------+---------------------+-------+
| 1 | 1 | 2013-11-22 00:00:00 | 10 |
| 2 | 1 | 2013-11-23 00:00:00 | 20 |
| 3 | 1 | 2013-11-24 00:00:00 | 25 |
| 4 | 2 | 2013-11-26 00:00:00 | 15 |
| 5 | 2 | 2013-11-27 12:00:00 | 21 |
| 6 | 3 | 2013-12-29 00:00:00 | 8 |
+----+----------+---------------------+-------+
Мне нужен запрос, который будет производить следующий ответ:
+---------+---------------------+-----------------------+
| unit.id | stage.min.date | sum(stats.max.clicks) |
+---------+---------------------+-----------------------+
| 2 | 2013-11-22 00:00:00 | 46 |
| 3 | 2013-12-29 00:00:00 | 8 |
+---------+---------------------+-----------------------+
следующими правилами:
1) unit.id
- показать только блоки с unit.status=3
2) stage.min.date
- минимальный stage.date
для соответствующих unit_id
3) sum(stats.max.clicks)
- сумма stats.clicks
с максимальными значениями для каждого stage_id
, связанного с соответствующими unit_id
. В моем примере 46 = 25 (stage_id=1
) + 21 (stage_id=2
)
Проблема заключается в min.date и сумме кликов - я понятия не имею, как получить ее в одном запросе. Определенно, это не проблема для этого, используя php-код и несколько запросов.
Спасибо заранее.
Так вы хотите, чтобы написать свой код, не так ли? –
если вы попробовали любой запрос или код, пожалуйста, сообщите об этом. это поможет решить проблему –
Проблема заключается в том, что я не могу скомпилировать это в одном запросе без использования php-кодирования. –