phpmyadmin SQL使用多个WHERE子句返回多列上所有可能的组合

yv5phkfx  于 2022-11-23  发布在  PHP
关注(0)|答案(1)|浏览(124)

我正在使用本地MAMP连接并在phpMyadmin中创建数据库。我有一个Fantasy Football数据库,我想返回所有提交的阵容组合,其中NFL球员在比赛中的工资小于或等于50,000,并且Fantasy Points Scored大于或等于200。因此,有效阵容由QB、RB 1、RB 2、WR 1、WR 2、WR 3、TE、FLEX和DST。只有当阵容中9名球员的总成本小于或等于50,000时,才能提交有效的阵容(例如,QB花费10,000,RB 1花费5,000,RB 2花费6,000等,用于所有9个时隙,其必须小于或等于50,000)。每个阵容插槽必须有一个独特的球员,即使有多个跑回来和宽接收器插槽。FLEX插槽可以是RB,WR,或TE,但再次,不可能是其他位置的玩家。我试图获得比赛的结果,并返回得分超过200的所有可能的有效阵容的数据集。我的数据库没有规范化。我确实知道如何将其归一化,如果这会使结果更好/更快,我可以。但就目前而言,下面是一个指向示例数据集https://docs.google.com/spreadsheets/d/1ECXtOj3MALgQNVMrr1wOlNso2iipqg2jzP6Ty9DZ0JA/edit?usp=sharing的链接。我尝试了各种SQL SELECT语句,但它们都冻结了,我无法得到结果。我尝试过限制返回的结果数,但没有效果。下面是我想创建的基本SELECT语句:

SELECT DISTINCT QB, QB.Fpts, RB1, RB1.Fpts, RB2, RB2.Fpts, WR1, WR1.Fpts, WR2, WR2.Fpts, WR3, WR3.Fpts, TE, TE.Fpts, FLEX, FLEX.Fpts, DST, DST.Fpts
FROM QB, RB1, RB2, WR1, WR2, WR3, TE, FLEX, DST
WHERE
(QB.Salary + RB1.Salary + RB2.Salary + WR1.Salary + WR2.Salary + WR3.Salary + TE.Salary + FLEX.Salary + + DST.Salary <= 50000)
AND
(QB.Fpts + RB1.Fpts + RB2.Fpts + WR1.Fpts + WR2.Fpts + WR3.Fpts + TE.Fpts + FLEX.Fpts + DST.Fpts >= 200)
LIMIT 1000;

如何使它能够从该查询返回值,以及是否有方法将结果保存到文本文件?

mu0hgdu0

mu0hgdu01#

您需要附加条件,要求参与者不平等:

SELECT DISTINCT QB, QB.Fpts, RB1, RB1.Fpts, RB2, RB2.Fpts, WR1, WR1.Fpts, WR2, WR2.Fpts, WR3, WR3.Fpts, TE, TE.Fpts, FLEX, FLEX.Fpts, DST, DST.Fpts
FROM QB, RB1, RB2, WR1, WR2, WR3, TE, FLEX, DST
WHERE
WR1 != WR2 AND WR1 != WR3 AND WR2 != WR 3 
AND
RB1 != RB2 
AND
FLEX != WR1 AND FLEX != WR2 AND FLEX != WR3 AND FLEX != RB1 AND FLEX != RB2 AND FLEX != TE 
AND
(QB.Salary + RB1.Salary + RB2.Salary + WR1.Salary + WR2.Salary + WR3.Salary + TE.Salary + FLEX.Salary + + DST.Salary <= 50000)
AND
(QB.Fpts + RB1.Fpts + RB2.Fpts + WR1.Fpts + WR2.Fpts + WR3.Fpts + TE.Fpts + FLEX.Fpts + DST.Fpts >= 200)
LIMIT 1000;

相关问题