mysql选择检查彩票组合

时间:2018-08-10 03:52:08

标签: php mysql

昨晚我花了很多时间尝试不同的mysql查询,以使用mysql / php来简单地检查彩票组合,但仍然无法使其正常工作! Google进行了许多用户的尝试,尤其是在stackoverflow中,没有发现任何方法可以一直提供帮助。

我有一张桌子,上面有所有以前的获胜者号码,我只想查看5个主要号码和2个其他号码,以指出在给定号码之前发生的任何获胜情况

表名:win_archive(9列) 表结构:

 id | main_b1 | main_b2 | main_b3 | main_b4 | main_b5 | extra_b1 | extra_b2 | win_date
 1 .   22 | 10  |  5 | 59 | . 61 . |   1 |  9 . | 2/1/2011
 2 .   43 | 23  |  11 | 76 | . 25 . |   13 |  9 . | 30/3/2015
 3. ...

试图使用mysql IN子句

SELECT id, 
   main_b1, 
   main_b2, 
   main_b3, 
   main_b4, 
   main_b5, 
   extra_b1, 
   extra_b2, 
   win_date 
   WHERE  main_b1 IN ( 21, 44, 55, 22, 11, 1, 4 ) 

如果号码超过1个就行不通,那么我就无法检查它们,另外,我们设置的多余球与主球的设置不同,这意味着组合中可能存在相同的数字,但是-就像其中一个主球组,另外2个球中的一个...

期望给php一个5 + 2的数字,然后通过这个mysql查询得到类似的东西:

案例A:匹配2个主要球:存档中发现3场胜利

  • 日期:行为:xx-xx-xx-xx-xx-y-y

  • 日期:行为:xx-xx-xx-xx-xx-y-y

  • 日期:行为:xx-xx-xx-xx-xx-y-y

情况B:匹配2个主球和1个额外的球:存档中找到1个胜利

  • 日期:行为:xx-xx-xx-xx-xx-y-y

情况C:匹配3个主球和2个额外的球:找到1个胜利

  • 日期:行为:xx-xx-xx-xx-xx-y-y

真的很复杂吗?在线有数百个站点可以检查彩票组合,以为检查/查询将全部结束。.

任何提示将不胜感激...

2 个答案:

答案 0 :(得分:2)

这是一个示例查询,我认为它将实现您想要的。您只需要根据要搜索的结果来更改IN表达式中的值:

SELECT 
   main_b1, main_b2, main_b3, main_b4, main_b5, extra_b1, extra_b2,
   ((main_b1 IN (22, 23, 10, 11, 76)) +
    (main_b2 IN (22, 23, 10, 11, 76)) +
    (main_b3 IN (22, 23, 10, 11, 76)) +
    (main_b4 IN (22, 23, 10, 11, 76)) +
    (main_b5 IN (22, 23, 10, 11, 76))) AS main,
   ((extra_b1 IN (5, 9)) +
    (extra_b2 IN (5, 9))) AS extra,
    win_date
FROM win_archives
HAVING main >= 3 OR main = 2 AND extra > 0
ORDER BY main DESC, extra DESC, win_date DESC

我在此SQLFiddle中创建了更多示例数据:

INSERT INTO win_archives
    (`id`, `main_b1`, `main_b2`, `main_b3`, `main_b4`, `main_b5`, `extra_b1`, `extra_b2`, `win_date`)
VALUES
    (1, 22, 10, 5, 59, 61, 1, 9, '2011-01-02'),
    (2, 43, 23, 11, 76, 25, 13, 9, '2015-03-30'),
    (3, 22, 10, 5, 76, 61, 1, 4, '2014-06-02'),
    (4, 43, 9, 11, 76, 25, 5, 9, '2012-08-07'),
    (5, 22, 10, 5, 59, 61, 5, 12, '2016-12-02'),
    (6, 22, 23, 11, 76, 10, 5, 6, '2017-07-19'),
    (7, 22, 10, 5, 59, 61, 1, 9, '2018-09-02'),
    (8, 43, 23, 11, 76, 22, 13, 8, '2005-04-11')
;

使用此示例数据,输出为:

main_b1 main_b2 main_b3 main_b4 main_b5 extra_b1 extra_b2 main  extra   win_date
22      23      11      76      10      5        6        5     1       2017-07-19
43      23      11      76      22      13       8        4     0       2005-04-11
43      23      11      76      25      13       9        3     1       2015-03-30
22      10      5       76      61      1        4        3     0       2014-06-02
43      9       11      76      25      5        9        2     2       2012-08-07
22      10      5       59      61      1        9        2     1       2018-09-02
22      10      5       59      61      5        12       2     1       2016-12-02
22      10      5       59      61      1        9        2     1       2011-01-02

答案 1 :(得分:0)

不是答案。评论太久了...

标准化的模式可能看起来像这样:

绘制

${__eval(${__FileToString(test.xml,,)})} 

Draw_detail

draw_id | date
      1 | 2011-01-02
      2 | 2015-03-30