2012-05-15 4 views
0

je une feuille de calcul que je l'ai importé dans MySQL.It a plusieurs lignes d'entrées, y compris la chance de jeu i.e. 2/1 ou 7/2. Malheureusement, les cotes de jeu sont lues comme varchar par MySQL, ce qui rend impossible de faire des calculs sur eux. Il a été suggéré que je crée une table de recherche, où les chances de jeu peuvent être converties en valeurs décimales. C'est logique. OK, donc la grande question est comment puis-je faire à ce sujet? Dois-je créer une table distincte qui répertorie les probabilités de jeu et les égalise à leurs équivalents décimaux, si oui, comment pourrais-je faire des requêtes telles que, trouver toutes les lignes qui ont des cotes à 2/1 du tableau 1, et multiplier par 1 . Des suggestions s'il vous plaît?comment créer une table

+0

S'il vous plaît données d'échantillons de la façon dont vos données sont structurées en vous base de données. – jurgemaister

Répondre

0

Pour autant que je sais qu'il n'y a pas de type de données dans MySQL. Je suggère de ne pas créer de table séparée comme vous le suggérez. Si la précision n'est pas de la plus haute importance, vous pouvez simplement les stocker sous forme décimale avec une largeur spécifique et interroger avec la valeur décimale. Vous pouvez toujours convert it back to its fractional representation in the application layer. Si la simplicité compte, vous pouvez les stocker comme varchar. Voir here pour une question connexe.

0

Ceci est en fait tout à fait une question intéressante. Mes deux bits suggèrent que "7/2" n'est pas réellement utilisé comme un nombre, donc pourrait être interprété comme étant un "code", de la même manière que les codes de pays sont utilisés à la place du nom du pays entier. Je pourrais être enclin à aller avec la table de recherche, en utilisant les chances comme clé, et les facteurs de multiplication en tant que colonnes dans chaque rangée pour une utilisation en mathématiques. Vous pouvez également contrôler la précision que vous souhaitez utiliser, ainsi que les requêtes pour les cotes les plus élevées et les cotes les plus faibles très facilement.

Pas nécessairement dire que je suis ici, juste trouver ce intéressant.

1

Je pense une table de consultation est trop difficile à maintenir, car il y a un nombre infini de combinaisons de cotes possibles.

Au lieu de cela, je suggère fortement que vous créez une vue sur votre table de base, qui présente les différents domaines qui contiennent les chances:

create view v_table as 
    select t.*, 
      OddsTop*1.0/OddsBottom as OddsNumeric, 
      OddsBottom*1.0/(OddsTop + OddsBottom) as OddsPvalue 
    from (select t.*, 
       cast(left(t.odds, locate('/', t.odds, '/')-1) as int) as OddsTop, 
       cast(substring(t.odds, locate('/', t.odds)+1, 100) as int) as OddsBottom, 
      from t 
     ) t 

Vous pouvez facilement calculer différents types d'informations relatives à la cote. Ici, j'ai montré comment obtenir le nombre supérieur, le nombre inférieur, les cotes en tant que nombre à virgule flottante et l'équivalent de valeur p.