【发布时间】:2012-05-23 13:14:10
【问题描述】:
<?php
$query1 = "CREATE VIEW current_rankings AS SELECT * FROM main_table WHERE date = X";
$query2 = "CREATE VIEW previous_rankings AS SELECT rank FROM main_table WHERE date = date_sub('X', INTERVAL 1 MONTH)";
$query3 = "CREATE VIEW final_output AS SELECT current_rankings.player, current_rankings.rank as current_rank LEFT JOIN previous_rankings.rank as prev_rank
ON (current_rankings.player = previous_rankings.player)";
$query4 = "SELECT *, @rank_change = prev_rank - current_rank as rank_change from final_output";
$result = mysql_query($query4) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo $row['player']. $row['current_rank']. $row['prev_rank']. $row['rank_change'];
}
?>
所有查询都是独立工作的,但我真的很难将所有部分放在一个结果中,所以我可以将它与 mysql_fetch_array 一起使用。
我尝试创建视图和临时表,但每次它要么说表不存在,要么返回一个空的 fetch 数组循环......逻辑在那里,但语法混乱我认为这是第一次我必须处理需要合并在一起的多个查询。期待一些支持。非常感谢。
【问题讨论】:
-
我很确定有一种更有效的方法可以做到这一点,但是如果没有关于这些表的详细信息,就很难说。
-
实际查询要长得多,我试图提出一个紧凑的问题以获得更好的整体情况。尽管如此,结构仍然存在,进一步的细节并不相关,因为它最终会合并所有 4 个查询或一个接一个地执行它们。
-
为什么需要不断创建视图?视图基本上不会保存您的查询并在您从中选择时再次运行它吗?
-
完全正确,这就是我使用它们的原因。结果从父视图级联下来。
标签: php mysql string while-loop concatenation