Mysql三个查询合二为一

时间:2011-01-24 18:18:48

标签: php mysql

我有三个问题:

$data1 = mysql_query("SELECT * 
                        FROM 'table1' 
                       WHERE post_status = 'publish' 
                         AND 'post_title' LIKE '$letter%' 
                    ORDER BY 'post_title' ASC") or die(mysql_error()); 

while($info1 = mysql_fetch_array( $data1 )){ 
  $id = $info1['ID']; 
  $data2 = mysql_query("SELECT * 
                          FROM 'table2' 
                         WHERE post_id='$id' 
                           AND key = 'the_key'")  or die(mysql_error());  

   while($info2 = mysql_fetch_array( $data2 )){
     $key = $info2['value'];
   } 

   if ($key == 'something') {
     echo "..."; 
     $data3 = mysql_query("SELECT * 
                             FROM 'table3' WHERE postnumber='$id'")
                or die(mysql_error());
       while($info3 = mysql_fetch_array( $data3 )){
         echo $info3['counter'];
       }
       echo "...";
    }
 }

我想使用一个查询,因为三个需要一段时间,我尝试的查询需要更长的时间......

我花了很长时间试图解决这个问题;这不是'为我做的',但请帮助。

2 个答案:

答案 0 :(得分:1)

在id上加入你的三张桌子。

是的,我可以向您展示示例,但是,已经编写了大量的SQL JOIN示例。如果你看过其中一个,并有疑问,请问它。但是,如果你没有看过的机会,让我不要花时间重新编写你可以更快速谷歌的东西。 (我不是想成为一个聪明的人,只是努力最有效地利用我和你的时间。)

你应该使用左连接吗?还是一个平等的联盟?我不知道,我不知道你的数据。如果要复制现在的代码,则使用左连接。然而,equ-join可能是你真正想要的。

答案 1 :(得分:1)

最大的问题是,在迭代第二个查询之后,你会获取返回的最后一行的“值”。

但是你不能依赖从数据库返回的行的顺序 - 所以你的查询是不确定的。