2016-07-26 89 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

我一直都在想,@ 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" 

由于Jaime说你也可以只使用点连接字符串。

+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

which1ispink得到它的权利,但谢谢你的答复:) – Naim

相关问题