我有一个纵向数据的大型数据库(MS SQL Server),我正在查询该数据库以获取要在我的 Web 应用程序(PHP 驱动)中显示的信息。该数据库包含多年来许多高等教育课程的记录......但有时对于给定的年份/课程组合没有可显示的数据。当有人在没有特别选择年份的情况下点击 Web 应用程序时,我希望应用程序自动选择具有最多可用数据来显示的年份。
所以,这是我的问题......我是否应该查询数据库一次以获取所有年份的所有可用信息,然后遍历 PHP 中返回的数组以确定哪些年份有最好的可用数据?还是执行以下操作会更好,然后选择最好的数据年份,然后运行第二个 SQL 查询?
SELECT ProgYear, SUM(CASE WHEN WageDisp>0 THEN 1 ELSE 0 END) as WageCount,
SUM(CASE WHEN UNCDisp>0 THEN 1 ELSE 0 END) as UNCCount,
SUM(CASE WHEN CurrDisp>0 THEN 1 ELSE 0 END) as CurrCount,
SUM(CASE WHEN ConEdDisp>0 THEN 1 ELSE 0 END) as ConEdCount
FROM (SELECT ProgID, ProgYear, SUM(CASE WHEN MAX(NumWage0, NumWage1, NumWage2, NumWage3, NumWage4, NumWage5, NumWage6, NumWage7, NumWage8)>0 THEN 1 ELSE 0 END) as WageDisp,
SUM(CASE WHEN MAX(UNC0, UNC1, UNC2, UNC3, UNC4, UNC5, UNC6, UNC7, UNC8)>0 THEN 1 ELSE 0 END) as UNCDisp,
SUM(CASE WHEN MAX(Curr0, Curr1, Curr2, Curr3, Curr4, Curr5, Curr6, Curr7, Curr8)>0 THEN 1 ELSE 0 END) as CurrDisp,
SUM(CASE WHEN MAX(ConEd0, ConEd1, ConEd2, ConEd3, ConEd4, ConEd5, ConEd6, ConEd7, ConEd8)>0 THEN 1 ELSE 0 END) as ConEdDisp)
WHERE ProgID in (SELECT item from fnSplit(?, '|'))
PHP 应用程序将访问本地主机上的 SQL Server,因此数据的传输时间应该非常短。只是想知道提示/最佳实践。
谢谢!