Php 我必须考虑是否可以简化示例,但不要这么想……尝试解释它们:“Indata”是一行,其中包含步骤1中的筛选条件,“筛选后的结果1”是步骤1后留下的行,“筛选后的结果2”是步骤2后留下的行,“打印Indata 1”是在第二次筛选后显示字段OutData内容的最
Php 我必须考虑是否可以简化示例,但不要这么想……尝试解释它们:“Indata”是一行,其中包含步骤1中的筛选条件,“筛选后的结果1”是步骤1后留下的行,“筛选后的结果2”是步骤2后留下的行,“打印Indata 1”是在第二次筛选后显示字段OutData内容的最,php,sql,mysql,Php,Sql,Mysql,我必须考虑是否可以简化示例,但不要这么想……尝试解释它们:“Indata”是一行,其中包含步骤1中的筛选条件,“筛选后的结果1”是步骤1后留下的行,“筛选后的结果2”是步骤2后留下的行,“打印Indata 1”是在第二次筛选后显示字段OutData内容的最终结果。@Petter Magnusson:不要在此处添加注释。请修正这个问题,以便每个人都能看到清楚的解释。如果很难解释,那么编程几乎是不可能的——并且要确保程序是正确的。简化解释绝对是编写有效程序的核心。请用更简单、更清楚的解释更新问题。对
我必须考虑是否可以简化示例,但不要这么想……尝试解释它们:“Indata”是一行,其中包含步骤1中的筛选条件,“筛选后的结果1”是步骤1后留下的行,“筛选后的结果2”是步骤2后留下的行,“打印Indata 1”是在第二次筛选后显示字段OutData内容的最终结果。@Petter Magnusson:不要在此处添加注释。请修正这个问题,以便每个人都能看到清楚的解释。如果很难解释,那么编程几乎是不可能的——并且要确保程序是正确的。简化解释绝对是编写有效程序的核心。请用更简单、更清楚的解释更新问题。对不起!更好吗?
"Outdata" table, example:
Pos OutData Warn Mismatch Producer Depl DeplOffMax DeplOffMin Axis Connection
10 S 0 S * * * * *
20 24 0 S 24 * * * *
20 24 +-5 5 S 24 5 -5 * *
20 24 +-10 10 S 24 10 -10 * *
20 48 0 S 48 * * * *
30 AA 0 S * * * A *
30 AB 0 S * * * B *
30 AC 0 S * * * C *
30 AA B-AA 5 S * * * B
40 C1 0 S * * * * C1
40 C1 1 S * * * B *
40 C1 2 S 24 10 -10 * *
40 C2 0 S * * * * C2
Example 1:
Indat 1: S 24 A C2
Result for indata 1 after filter #1:
10 S 0 S * * * * *
20 24 0 S 24 * * * *
20 24 +-5 5 S 24 5 -5 * *
20 24 +-10 10 S 24 10 -10 * *
30 AA 0 S * * * A *
40 C1 2 S 24 10 -10 * *
40 C2 0 S * * * * C2
Result for indata 1 after filter #2:
10 S 0 S * * * * *
20 24 0 S 24 * * * *
30 AA 0 S * * * A *
40 C1 2 S 24 10 -10 * *
40 C2 0 S * * * * C2
Print for indata 1:
Mismatch 0: S 24 AA C2 Warning -
Mismatch 2: S 24 AA C1 Warning -
Example 2:
Indata 2: S 33 B C2
Result for indata 2 after filter #1:
10 S 0 S * * * * *
20 24 +-10 10 S 24 10 -10 * *
30 AB 0 S * * * B *
30 AA B-AA 5 S * * * B
40 C1 1 S * * * B *
40 C1 2 S 24 10 -10 * *
40 C2 0 S * * * * C2
Result for indata 2 after filter #2:
10 S 0 S * * * * *
20 24 +-10 10 S 24 10 -10 * *
30 AB 0 S * * * B *
30 AA B-AA 5 S * * * B
40 C1 1 S * * * B *
40 C2 0 S * * * * C2
Print for indata 2:
Mismatch 10: S 24 AB C2 Warning: +-10
Mismatch 11: S 24 AB C1 Warning: +-10
Mismatch 15: S 24 AA C2 Warning: +-10 B-AA
Mismatch 16: S 24 AA C1 Warning: +-10 B-AA
Example 3:
Indata 3: S 28 B C1
Result for indata 3 after filter #1:
10 S 0 S * * * * *
20 24 +-5 5 S 24 5 -5 * *
20 24 +-10 10 S 24 10 -10 * *
30 AB 0 S * * * B *
30 AA B-AA 5 S * * * B
40 C1 0 S * * * * C1
40 C1 1 S * * * B *
40 C1 2 S 24 10 -10 * *
Result for indata 3 after filter #2:
10 S 0 S * * * * *
20 24 +-5 5 S 24 5 -5 * *
30 AB 0 S * * * B *
30 AA B-AA 5 S * * * B
40 C1 0 S * * * * C1
Print for indata 3:
Mismatch 5: S 24 AB C1 Warning: +-5
Mismatch 10: S 24 AA C1 Warning: +-5 B-AA
SELECT outdata.Pos,
outdata.OutData,
outdata.Warn,
MIN(outdata.Mismatch),
outdata.Producer,
outdata.Depl,
outdata.DeplOffMax,
outdata.DeplOffMin,
outdata.Axis
outdata.Connection
FROM outdata, indata
WHERE
(//some nasty type juggling here
outdata.depl='*'
OR outdata.deploffmin='*'
OR indata.depl='*'
OR (
outdata.depl<>'*'
AND outdata.deploffmin<>'*'
AND indata.depl<>'*'
AND outdata.depl-outdata.deploffmin>indata.depl
)
)
AND ( outdata.outdata=indata.outdata
OR outdata.outdata='*'
OR indata.outdata='*' )
AND ( outdata.connection=indata.connection
OR outdata.connection = '*'
OR indata.connection='*' )
AND (outdata.axis=indata.axis
OR outdata.axis='*'
OR indata.axis='*' )
....repeat for all the fields you want to match
GROUP BY outdata.Pos,
outdata.OutData,
outdata.Warn,
outdata.Producer,
outdata.Depl,
outdata.DeplOffMax,
outdata.DeplOffMin,
outdata.Axis
outdata.Connection
ORDER BY 4 ASC;