2013-07-26 99 views
1

图片以下数据为SELECT * FROM teams;PHP +动态SQL查询

Country Games-W Games-l ScoreAverage RedCards YellowCards 
USA  0.18  0.72  0.67   .01   .08 
Mecixo  0.28  0.62  0.77   .06   .01 
Italy  0.48  0.52  0.87   .07   .00 
Spain  0.78  0.22  0.97   .08   .18 

结果我想知道,我怎么能有以下。

我知道如何实现给定列的动态排序。使用下拉菜单,用户可以选择要排序的列并点击。

我想找到一个很好的方法来排序一组列,而不必为每个排列写一个查询。

类似SELECT *, AVERAGE(Columns) as OverAll FROM teams order by OverAll ASCE;其中Columns是一组列。

问题是:我如何提供列的列表? 使用html复选框的?如果是这样,我如何获得可用列的列表(什么是查询)?

有没有更好的方法呢?

我宁愿如果解决方案与SQLite兼容,但是,如果需要,我可以更改我的数据库。

编辑:

一位评论说,你这是什么意思平均? (1/n)SUM(ai):从i = i:{选择列}到n =大小|选择的列|

SELECT *, AVERAGE(Game-w, games-l, scoreAverage, redCards, yellowcards) as OverAll FROM teams where Country= 'USA' order by OverAll ASCE;会导致:

Country Games-W Games-l ScoreAverage RedCards YellowCards average 
USA  0.18  0.72  0.67   .01   .08   .32 
+0

是你需要显示在网页排序的列?或者你只是想通过点击头部来排序每一列? – Suleman

+0

我可以在网上对给定的列进行排序。但我需要按多列平均值排序的能力 – Cripto

+0

“多列平均值”是什么意思?举个例子! –

回答

1

使用下面的查询,就可以得到表列。

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'database_name' AND 
     TABLE_NAME = 'table'; 
0

请试试这个,我没有你的情况下测试,但AVERAGE功能可以ORDER BY子句中使用,

SELECT * FROM teams where Country= 'USA' 
order by AVG(Game-w, games-l, scoreAverage, redCards, yellowcards) ASC; 
+0

这不起作用。 Im在sqlite中。 – Cripto

+0

@ user1048138:请确保您已从最后删除** E **。 – Suleman