Преработка на заявка.

eLite каза:
sentenello каза:
eLite каза:
Виждам, че имаш доста теми на тази тематика - залагания и пр..
Също виждам, че имаш теми с parse-ване на данни от някакво API.

Да разбираме ли, че използваш някакво API за входни данни, които искаш да използваш в своето приложение?

Информацията която използвам я взимам от free xml файл на даден букмейкър. След като я взема си я вкарвам според зависи от информацията, в различни таблици в моя БД и оттам вече си извеждам което искам аз.

Ето линка, за да разбереш какво вземам.
http://xml.cdn.betclic.com/odds_en.xml

УЖАС! Само определени спортове и event-и ли искаш или всичко?

Други източници не си ли гледал?

http://www.pinnaclesports.com/en/api/manual

Много по-развито API...
УЖАС! Софийският районен съд го е затворил... :D
(без убиди колега просот погледнах линка и се възмутих както ти преди малко)
http://www.pinnaclesports.com/
 
Принципно искам само футбола да вземам, но когато го правих така и не можах да го накарам да взема само футбола и в момента вземам всичко , като от БД си вадя само футбола. Съответно и всички евенти на футбола
 
Само "футбол" може да се вземе много лесно с xpat
PHP:
$xml = simplexml_load_file("http://xml.cdn.betclic.com/odds_en.xml");
$footbal = $xml->xpath('//sports/sport[@name="Football"]');
print_r($footbal);
 
dakata__92 каза:
УЖАС! Софийският районен съд го е затворил... :D
(без убиди колега просот погледнах линка и се възмутих както ти преди малко)
http://www.pinnaclesports.com/

Ха. Даже не забелязах.. Бях си вързан към UK-ия VPN.. :D :D :D
 
Остана ми време да поразгледам и да прочета хубаво вашите мнения и стигнах до този извод (не знам дали дори е правилно).

Първата ми заявка взема всички мачове.

Код:
SELECT s.name AS sport_name,
 e.name AS event_name,
 CONCAT( m.hometeam,  ' - ', m.awayteam ) AS teams, 
 CONCAT( m.HTgd,  ' - ', m.HTgg ) AS htresult, 
 CONCAT( m.FTgd,  ' - ', m.FTgg ) AS ftresult, 
 m.hometeam AS domakina, 
 m.awayteam AS gosta, 
 e.countryBG as countrytoBG,
 e.countryEN as countryflag,
 e.leagueBG as ligatabg,
 m.start_date

FROM  `event` e
LEFT JOIN  `sport` s ON  s.id = e.sportid 
LEFT JOIN `match` m  ON m.event_id = e.id AND m.ftgd IS NOT NULL AND m.ftgg IS NOT NULL
LEFT JOIN `bettype` b  ON b.match_id = m.id AND b.name = 'Match Result'
LEFT JOIN  `choicetype` c ON c.bet_id = b.id

WHERE e.sportid =  '1' AND e.countryBG !=''
GROUP BY m.id
ORDER BY m.start_date DESC

След това в
while {}

Трябва да направя друга лека заявка която да взема приоритетите на двата отбора от друга таблица и така да ми подрежда масива който ще изкарам.

Благодарени на даката преводите ги правя по този начин.

Код:
  $chekhomebgname = mysql_query("select * from otbori WHERE `teamEN`=\"".$domakinskiqotbor."\" AND country!='' AND teamBG!='' OR `teamEN`=\"".$gostuvashtiq."\" AND country!='' AND teamBG!=''")or die(mysql_error());
$translate = array();
while($rowata = mysql_fetch_array($chekhomebgname)){
        $translate[$rowata["teamEN"]] = $rowata["teamBG"];
}

Мисля че по някакъв такъв начин трябва да сумирам и приоритетите на двата отбора, но дори и да успея да го направя, не знам как да сортирам резултатите така че да излизат все едно в заявката съм дал order by prioritet ASC. Моля за някаква подсказка с лек код.
 
Ето и структурата на таблиците ми.
sport
Код:
CREATE TABLE IF NOT EXISTS `sport` (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET cp1251 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

event
Код:
CREATE TABLE IF NOT EXISTS `event` (
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `countryEN` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `leagueEN` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `countryBG` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `leagueBG` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `priority` int(11) NOT NULL DEFAULT '20',
  `id` int(11) NOT NULL,
  `sportid` int(11) NOT NULL,
  `sobstvenoid` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`sobstvenoid`),
  KEY `sportid` (`sportid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1256 ;

match
Код:
CREATE TABLE IF NOT EXISTS `match` (
  `id` int(11) NOT NULL,
  `event_id` int(11) NOT NULL,
  `hometeam` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `awayteam` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `FTgd` int(11) DEFAULT NULL,
  `FTgg` int(11) DEFAULT NULL,
  `HTgd` int(11) DEFAULT NULL,
  `HTgg` int(11) DEFAULT NULL,
  `start_date` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `event_id` (`event_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

bettype
Код:
CREATE TABLE IF NOT EXISTS `bettype` (
  `id` int(11) NOT NULL,
  `match_id` int(11) NOT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `match_id` (`match_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
otbori
Код:
CREATE TABLE IF NOT EXISTS `otbori` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `country` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `teamEN` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `teamBG` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `priority` int(11) NOT NULL DEFAULT '20',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6714 ;

Реално вадя мачове от таблицата match и я подреждам по дата и приоритет на лигата (event.priority). Целта ми обаче е след като вече знам кои са мачовете да ги подредя и по общия приоритет на отборите.

в таблица otbori съм сложил приоритет на всеки един отбор и искам да бъркам в нея таблица и да подреждам от там.
 
В момента заявката се зарежда за 0.14 като това стана като и зададох да взема само резултатите за последните 3 дни.
 
sentenello каза:
В момента заявката се зарежда за 0.14 като това стана като и зададох да взема само резултатите за последните 3 дни.
Тоест ускорила ли се е или не? Реално както ти казвах заявката е по-бърза но само по принцип. Когато чакаш цялата да се зареди абе има си вътрешни реконекции които бавят и можеш да избегнеш с нормален php който е малко по-бавен но пък ти ускорява кода заради грешното структориране и идейно уползотворяване на заявката. При усложняването и с излишни логики които спрямо тези в php са по-бавни няма смисъл. Не ми се правят излишни рисунки за да ти обясня по-обстойно какво имам в предвид но понякога чисто теоретически ако приемем че SQL е по-бърз от PHP в тази тясна ивица, то заради естеството на кода който искаме да създадем и спрямо това което трябва да прави излиза, че е по-бавно. Е има си някакви оптимизации но не съм се ровил надълоко в SQL, за да съм ти полезен. :)
 
Благодаря ти за добрите коментари които пишеш @Dakata ... благодарение на коментари от такъв тип, научава неща които не съм знаел :?:
 
sentenello каза:
Благодаря ти за добрите коментари които пишеш @Dakata ... благодарение на коментари от такъв тип, научава неща които не съм знаел :?:

Ами да ти кажа честно и аз обичам някой да ми обяснява по-подробно защо не съм прав и къде греша ако не съм се досетил и сам. Заради това доста от коментарите ми са и така отклонения от темите :)
 

Back
Горе