Artem_Paris
Новичок
Всем привет. Не знаю, как коротко написать, поэтому пишу все.
имеется таблица:
Учитывая, что:
- событий много
- тоталов много
- на каждый тотал каждого события разные букмекеры дают свои коэффициенты.
- могут быть события, на чей тотал коэффициент дает только один букмекер. их исключаем в запросе
Задача такая.
Мне нужно вывести из таблицы данные, группируя по booker,event,totals игнорируя те тоталы, на которые кф дает только один букмекер.
Делаю так:
Запрос работает. все выводит как надо. НО зависает при наличии свыше 10тыс записей.
Дальше полученный результат записываю в массив такого типа:
Если нарисовать это в таблице, то получается так:
Далее мне надо дважды прокрутить этот массив в цикле, чтобы перемножить так:
10.5*0.99 = ?
10.5*1.03 = ?
12*1.5 = ?
12*1.03 = ?
11*1.5 = ?
11*0.99 = ?
И уже если какое-то из этих произведений больше нужной цифре, например 10, тогда записываю данные в массив такой:
Вопрос:
Можно ли в select сделать все эти расчеты? чтобы сначала выводилось не всё, а потом с помощью php отсекались ненужные, а выводилось сразу уже нужные event, например?
А точнее:
1. выбрать события, у которых кф на тотал дают хотя бы два букмекера.
2. перемножить их между собой, как я писал выше
3. и если произведение выше например 10, вывести те записи, которые были задействованы пнри умножении, в нашем случае чтобы результат запроса был такой:
функции и процедуры допускаются. что угодно, лишь бы работало быстро
имеется таблица:
Код:
booker event totals under over
booker1 CSKA vs Spartak 1.5 6.5 1.08
booker1 CSKA vs Spartak 2.5 3.2 1.28
booker2 CSKA vs Spartak 1.5 5.5 2.08
booker2 CSKA vs Spartak 2.5 4.2 3.28
- событий много
- тоталов много
- на каждый тотал каждого события разные букмекеры дают свои коэффициенты.
- могут быть события, на чей тотал коэффициент дает только один букмекер. их исключаем в запросе
Задача такая.
Мне нужно вывести из таблицы данные, группируя по booker,event,totals игнорируя те тоталы, на которые кф дает только один букмекер.
Делаю так:
Код:
SELECT t.event, t.booker, t.totals, t.under, t.over
FROM(
SELECT count(*),o.event, o.booker, o.totals
FROM odds_totals o
GROUP BY o.event, o.totals
having count(*)>1
ORDER BY o.event, o.booker, o.totals
) o
LEFT JOIN odds_totals t on t.event = o.event and t.totals= o.totals
GROUP BY t.event, t.totals, t.booker
Дальше полученный результат записываю в массив такого типа:
Код:
Array
(
[AA Gent - Cercle Brugge] => Array
(
[0.5] => Array
(
[under] => Array
(
[betclic] => 10.5
[brkings] => 12
[expekt] => 11
)
[over] => Array
(
[betclic] => 1.5
[brkings] => 0.99
[expekt] => 1.03
)
)
Код:
booker | under | over
---------------------
betclic| 10.5 |1.5
brkings| 12 |0.99
expekt | 11 |1.03
10.5*0.99 = ?
10.5*1.03 = ?
12*1.5 = ?
12*1.03 = ?
11*1.5 = ?
11*0.99 = ?
И уже если какое-то из этих произведений больше нужной цифре, например 10, тогда записываю данные в массив такой:
Код:
Array
(
[10.395] => Array
(
[Stan Wawrinka - Marin Cilic] => Array
(
[under] => Array
(
[betclic] => 10.5
)
[over] => Array
(
[brkings] => 0.99
)
[end] => 10.395
)
)
)
Можно ли в select сделать все эти расчеты? чтобы сначала выводилось не всё, а потом с помощью php отсекались ненужные, а выводилось сразу уже нужные event, например?
А точнее:
1. выбрать события, у которых кф на тотал дают хотя бы два букмекера.
2. перемножить их между собой, как я писал выше
3. и если произведение выше например 10, вывести те записи, которые были задействованы пнри умножении, в нашем случае чтобы результат запроса был такой:
Код:
betclic Stan Wawrinka - Marin Cilic 0.5 10.5 1.5
brkings Stan Wawrinka - Marin Cilic 0.5 12 0.99