$t=array('a','b','c','d','e'); $s=count($t); $sql=""; for ($i=0;$i<=$s;$i++) { $sql.="SELECT id,form_name,form_number,time,zt FROM $t[$i] WHERE zt=1 union all "; }
表联合查询的时候,有相同字段必须在字段加面加上表名或者表的别名. 一般遇到这种情况都用表的别名.如: select t1.id, t2.id from table1 as t1, table2 as t2 where t1.id = t2.id
可是我现在腰进行的仅仅是普通的多表查询,而不是联合,因为知识从两个表中取数据,这两个表没有什么联系。 现在的问题是要分别给where中的字段加上表名,所以这回让where子句变得很大,同时因为对tablea和tableb所限制查询的where条件以墨一样,我觉得有没有什么好方法能够精简语句, 而不妖用 where tablea.classid=xxx and tableb.classid=xxx 谢谢
$s=count($t);
$sql="";
for ($i=0;$i<=$s;$i++) {
$sql.="SELECT id,form_name,form_number,time,zt FROM $t[$i] WHERE zt=1 union all ";
}
$sql=substr("$sql",0,-10);
$ttt=mysql_query($sql);这事一个朋友多表查询的例子,但是用的是union联合,总觉得这样做SQL太长,有简洁的方法吗
谢谢
一般遇到这种情况都用表的别名.如:
select t1.id, t2.id from table1 as t1, table2 as t2 where t1.id = t2.id
现在的问题是要分别给where中的字段加上表名,所以这回让where子句变得很大,同时因为对tablea和tableb所限制查询的where条件以墨一样,我觉得有没有什么好方法能够精简语句,
而不妖用
where tablea.classid=xxx and tableb.classid=xxx
谢谢
可以将每个表建一个短小的别名就可以不会让where字句很大了