我要进行多表查询,而languageid两个表中都该字段,网上的解决方法是在WHERE 后的条件字段中加上表名
where tablea.classid=xxx and tableb.classid=xxx
但是因为我的条件无论对tablea,tableb都是一样的,非要这么麻烦的写吗

解决方案 »

  1.   

    当然不必写这么麻烦,判断的条件一样,就尽量写精点,不要那么多判断,这样反而对MySQL引擎有不好的影响。
      

  2.   

    $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   ";   
      }   
        
      $sql=substr("$sql",0,-10);   
      $ttt=mysql_query($sql);这事一个朋友多表查询的例子,但是用的是union联合,总觉得这样做SQL太长,有简洁的方法吗
    谢谢
      

  3.   

    表联合查询的时候,有相同字段必须在字段加面加上表名或者表的别名.
    一般遇到这种情况都用表的别名.如:
    select t1.id, t2.id from table1 as t1, table2 as t2 where t1.id = t2.id
      

  4.   

    可是我现在腰进行的仅仅是普通的多表查询,而不是联合,因为知识从两个表中取数据,这两个表没有什么联系。
    现在的问题是要分别给where中的字段加上表名,所以这回让where子句变得很大,同时因为对tablea和tableb所限制查询的where条件以墨一样,我觉得有没有什么好方法能够精简语句,
    而不妖用
    where tablea.classid=xxx and tableb.classid=xxx
    谢谢
      

  5.   

    一定要指定从那个表里拿languageid。
      

  6.   


    可以将每个表建一个短小的别名就可以不会让where字句很大了