2011-01-05 64 views
0

Faily新到PHP和MySQL,这可能会显得很混乱。mysql多表查询PHP内循环

这是我想出了:

$query = "show tables like 'whatever%'"; 
$result = mysql_query($query); 
$num_results = mysql_num_rows($result); 

for ($i = 0; $i < $num_results; $i++) 
{ 
$row = mysql_fetch_array($result); 
$sql=mysql_query("SELECT * FROM ". $row[0] ." WHERE a=(SELECT MAX(a)) AND b=(SELECT MAX(b)) AND c LIKE 'd%' ORDER BY date DESC LIMIT 1"); 


while($info=mysql_fetch_array($sql)){ 
    echo "..."; 
} 
} 

我从每个表中获取所需的值,所以X结果取决于表的数量。我想要的是查询表的结果,但只显示按日期/时间排序的前10-5。

这是可能的当前脚本?有没有更简单的方法(同时,桌子数量不断变化)?这种查询方法数据库加剧吗?

干杯!

+0

这里的目标是什么?回声(无需担心在php var中存储)来自任何以'whatever'开头的表中满足最大条件的X最近行中的某些字段? – 2011-01-05 03:15:10

+0

如果x = 100个表格,我得到每个表格的值/输出,我只想要100个表格中的10个,最近的10个表格是最近的。 – Alfie 2011-01-05 04:23:36

回答

0

我不断地改变具有类似结构的表的数目,这是一个设计错误。也查询切换到

$sql=mysql_query("SELECT * FROM $tbl WHERE c LIKE 'd%' ORDER BY a DESC, b DESC, date DESC LIMIT 1"); 

对数据库有点救济。

+0

感谢您的答案,不幸的是,这并没有解决我的问题。我网站上的某些页面充当小型数据库,当页面加载时,会查询与页面相对应的表格。我确实有一张表,但担心每次页面加载时查询大量数据都不是好事,即我的问题。除非单个表格不会对有效性产生巨大影响? – Alfie 2011-01-05 04:32:47

+0

http://dev.mysql.com/doc/refman/5.1/en/partitioning.html – 2011-01-05 04:53:29

+0

http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html – 2011-01-05 04:54:02