2016-07-26 6 views
0

Просто интересно, если это возможно, чтобы сделать это:переменных как часть имени столбца

У меня есть несколько столбцов с одинаковым именем для последних цифр, за исключением:

Round1, Round2, Round3, Round4 ... и т.д.

Я также определили переменную, что мне нужно обновить вручную в зависимости от того, какой столбец Id нравится быть приняты во внимание во всех моих запросах вместо обновления каждого из них в отдельности (экономия времени)

$round_number="4"; // round 4 selected for example here 

, то это один из моих запросов, мне это нужно, чтобы выбрать номер раунда, определенный выше переменной, я попытался это:

SELECT *, sum(Round'$round_number') as round_total from mytable where group_name LIKE 'fighters%' group by side order by round_total desc 

, как и ожидалось, выше запрос не удалось ...

Любая помощь радушен

Благодарности EDIT ребята (фактический запрос как есть)

$latest_week="4"; // UPDATE ALERT HERE 
$result = mysql_query("SELECT *, sum(SR) as SRT, sum(RS'. $latest_week . ')  as RST FROM na_july16_resources_v2 where group_name LIKE 'fighters%' group by side order by RST desc") 

или умереть (mysql_error());

+1

Возможно, вам понадобится использовать 'dynamic sql', если вы не знаете количество потенциальных столбцов. Если вы это сделаете, тогда вы могли бы использовать операторы 'case' вместо ... – sgeddes

+1

Если каждый раунд является отдельным столбцом, у вас определенно есть неправильный дизайн базы данных. – e4c5

+0

Ive всегда думал, что @ e4c5. Я должен положить раунды как ряды, не так ли? – Naim

ответ

1

Вы можете прочитать переменную внутри строки, используя двойные кавычки. Строки в двойных кавычках (а не одинарные кавычки) анализируются для имен переменных. Таким образом, вы могли бы сделать это, чтобы использовать переменную внутри запроса:

"SELECT *, sum(Round$round_number) as round_total from mytable where group_name LIKE 'fighters%' group by side order by round_total desc" 

Как Хайме сказал, что вы также можете просто сцепить строки, используя точку.

+0

Все сработало! Спасибо :) – Naim

1

В PHP строки объединены точкой. $sql = 'SELECT *, sum(Round' . $round_number . ') as round_total from mytable where group_name LIKE \'fighters%\' group by side order by round_total desc'

+0

Спасибо, @Jaime. Я попытался, но все еще не смог, я уверен, что я сделал что-то неправильно, поэтому я отредактировал свой вопрос, добавив фактический запрос, поскольку надеется, что вы, возможно, заметите виновника ... – Naim

+0

Можете ли вы опубликовать схему этой таблицы? – Jaime

+0

who1ispink получил это право между тем, но спасибо за ваш ответ в любом случае :) – Naim

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