Помогнете за направата на Заявка

sentenello

Registered
Информацията ми се намира в 6 различни таблици сега ще дам информация от всички
Таблица 1: sport
Код:
id   name
1     Football
Таблица 2: event
Код:
id sportid  name
3        1          Eng. Premier League
Таблица 3: match
Код:
id       event_id  hometeam      awayteam
100         3               United            Liverpool
Таблица4: bettype
Код:
id     matchid      name
300     100             winner
Таблица 5: starzalog
Код:
id  betid name   koef
1    300     1           2.00
2    300     X           3.00
3    300     2           1.90
Таблица 6: novzalog
Код:
id  betid name   koef
1    300     1           2.20
2    300     X           3.50
3    300     2           1.60

Целта ми е да взема цялата информация като я подредя по дропа на коеф. В случая дропа е при коеф 2.

Резултатите ми в крайна сметка трябва да изглеждат ето така.
Код:
Спорт             Първенство                               Мач                     1        Х        2     
Football         Eng. Premier League     United- Liverpool   2,00   3,00  1,90
                                                                                                       2,20   3,50   1,60
 
Задължително ли е таблиците star/nov zalog да имат тази структура?

Няма ли да ти е по-лесно друга структура:
nov/starzalog
id betid koef_1 koef_x koef2
 
По-лесно ще е, но информацията която вземам не ми позволява да го направя така.

Ето от какво вземам 1 Х 2
Код:
<bet code="Ftb_Mr3" name="Match Result" id="14971965">
<choice name="%1%" id="105977318" odd="5.50"/>
<choice name="Draw" id="105977322" odd="4.15"/>
<choice name="%2%" id="105977326" odd="1.55"/>
</bet>

До тук ок, но има и неща от сорта на
Код:
<bet code="Ftb_Csc" name="Correct Score" id="14971991">
<choice name="1 - 1" id="105977495" odd="7.75"/>
<choice name="1 - 2" id="105977507" odd="7.75"/>
<choice name="2 - 1" id="105977501" odd="14.00"/>
<choice name="2 - 2" id="105977504" odd="12.00"/>
<choice name="1 - 0" id="105977483" odd="17.00"/>
<choice name="2 - 0" id="105977492" odd="30.00"/>
<choice name="3 - 0" id="105977510" odd="50.00"/>
<choice name="3 - 1" id="105977519" odd="35.00"/>
<choice name="3 - 2" id="105977528" odd="30.00"/>
<choice name="4 - 0" id="105977537" odd="100.00"/>
<choice name="4 - 1" id="105977543" odd="75.00"/>
<choice name="4 - 2" id="105977549" odd="75.00"/>
<choice name="4 - 3" id="105977555" odd="75.00"/>
<choice name="0 - 0" id="105977486" odd="14.50"/>
<choice name="3 - 3" id="105977513" odd="35.00"/>
<choice name="4 - 4" id="105977522" odd="100.00"/>
<choice name="0 - 1" id="105977489" odd="8.50"/>
<choice name="0 - 2" id="105977498" odd="8.25"/>
<choice name="0 - 3" id="105977516" odd="11.00"/>
<choice name="1 - 3" id="105977525" odd="10.50"/>
<choice name="2 - 3" id="105977534" odd="16.00"/>
<choice name="0 - 4" id="105977540" odd="19.00"/>
<choice name="1 - 4" id="105977546" odd="18.00"/>

Затова съм го направил всеки коеф да се записва на нов ред
 
Добре, но очакваш ли да имаш залагания за точен резултат?
Понеже вторият XML е за точен резултат?

Също така, би ли обяснил изискването за 'дроп-а'?
 
Аз вземам тези коефициенти за момента само за да ги извеждам за статистика, не за да залагат, но все пак занапред може да ми хрумне нещо с което да ги използвам

Дропа, исках да кажа спада. Който се изчислява

((startkoef - novkoef )/startkoef ) * 100

да кажем имам 2.10 стар и 1.50 нов
((2.10 - 1.50) / 2.10) * 100 = 28.57%
 
аз лично в момента се сещам за този начин да го направиш,с няколко JOIN-a, но мисля че performance-a няма да му е мн. добър

Код:
SELECT
   * 
FROM
   `sport` AS s 
LEFT JOIN
   `event` AS e 
      ON s.id = e.sportid 
LEFT JOIN
   `match` AS m 
      ON m.event_id = e.id 
LEFT JOIN
   bettype AS b 
      ON b.matchid = m.id 
LEFT JOIN
   starzalog AS sz 
      ON sz.betid = b.id 
LEFT JOIN
   novzalog AS nz 
      ON nz.betid = b.id 
ORDER BY
  (((sz.koef - nz.koef)/sz.koef)*100)
)

Не знам дали работи , написал съм го набързо, колко да имаш нещо ориентировачно.
Другия начин е с няколко заявки, но не знам до колко ще ти свърши работа. А и 1 въпрос за ORDER-a, защо не направиш още една колона в novzalog или направо нова таблица, където да държиш именно 'дроп'-а на коефициента ?
 
Моята заявка в момента е почти същата :D. За нова таблица в която да държа дропа не съм се сещал, но не е ли по-добре да си изчислявам дропа в заявката и да извеждам, отколкото да имам за всеки коефициент дропа ?

Ето я и моята заявка, която ползвам в момента
[sql]
SELECT s.name AS sport_name,
( ( c.koef - odd.koef ) / c.koef ) * 100 AS `change`,
odd.koef AS oddkoef,
e.name AS event_name,
Concat(m.hometeam, ' - ', m.awayteam) AS teams,
m.start_date AS start_date,
c.name AS zalog,
m.id AS mid,
# EDIT START
Group_concat(c.koef order by c.koef desc SEPARATOR '_') AS koef
# EDIT END
FROM `event` e
LEFT JOIN `sport` s
ON e.sportid = s.id
LEFT JOIN `match` m
ON e.id = m.event_id
LEFT JOIN `bettype` b
ON m.id = b.match_id
LEFT JOIN `choicetype` c
ON b.id = c.bet_id
LEFT JOIN `oddmove` odd
ON c.id = odd.id
WHERE e.sportid = '1'
AND b.name = 'Match Result'
AND m.start_date >= Curdate()
AND ( ( c.koef - odd.koef ) / c.koef ) * 100 > '5.00'
# EDIT START
GROUP BY m.id
HAVING `koef` > `oddkoef`
# END EDIT
ORDER BY `change` DESC[/sql]
 
Не мога да ти дам точен отговор, а и е според случая и това което търсиш, но аз лично мисля, че е по-добре да е в таблица, която автоматично да ти изчислява стойността, вместо да товариш заявката. По-добре при тебе да става малко по-бавно, от колкото при потребителя :)
 

Back
Горе