【发布时间】:2016-09-17 23:14:45
【问题描述】:
我有一个有趣的问题实际上让我很伤心。
我有两张化妆相同的桌子。一张桌子保存给定抽奖的中奖彩票号码,另一张桌子保存 500 张随机生成的该抽奖的“彩票”。
我正在尝试编写一些代码来告诉我 500 张票中有多少张有 3 个匹配号码、4 个匹配号码、5 个匹配号码,当然还有全部 6 个匹配号码。
两个表的表结构是
id、playDate、num1、num2、num3、num4、num5、num6。
这就是我所在的位置,在任何人说任何话之前,我就知道这是不正确的。在这里真的很挣扎:
SELECT count(*) AS c, w.*, l.*
FROM winningNums AS w, lottoNums AS l
WHERE w.playDate = "2016-10-10"
AND l.playDate = "2016-10-10"
AND l.num1 (
w.num1, w.num2, w.num3, w.num4, w.num5, w.num6
)
我也一直在打这样的东西
SELECT *
FROM winningNums AS w
INNER JOIN lottoNums AS l
ON w.playDate = l.playDate
AND w.num1 = l.num1
AND w.num2 = l.num2
AND w.num3 = l.num3
AND w.num4 = l.num4
AND w.num5 = l.num5
AND w.num6 = l.num6
我面临的主要问题是 num1、num3 和 num4(来自彩票)与 num2、num5 和 num6(来自中奖号码)匹配可能会赢得 3 场比赛。
帮助:-)
【问题讨论】:
-
规范化您的数据,而不是有两列 playDate 和 lottoNumbrer 每个 playDate 有六行。那么你的加入就很简单了。
-
同意@Niagaradad - 这是数据规范化的经典示例。
-
我不确定你们的意思,但至少这是一个线索。感谢您为我指明正确的方向。我会去学习标准化。以前没有遇到过。