2013-07-26 2 views
1

Image следующие данные в результате 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; где Столбцы - это набор столбцов.

Вопросы: Как я могу предоставить список столбцов? Использование html checkbox's? Если да, как мне получить список доступных столбцов (что такое запрос)?

Есть ли лучшие подходы к этому?

Я бы предпочел, чтобы решение было совместимо с SQLite, однако при необходимости я могу изменить свою базу данных.

EDIT:

Один из комментариев сказал, что вы имеете в виду в среднем?

Я имею в виду (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

@ пользователь1048138: обязательно удостоверьтесь, что вы удалили ** E ** с самого последнего. – Suleman

Смежные вопросы