我有三个问题:
$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 "...";
}
}
我想使用一个查询,因为三个需要一段时间,我尝试的查询需要更长的时间......
我花了很长时间试图解决这个问题;这不是'为我做的',但请帮助。
答案 0 :(得分:1)
在id上加入你的三张桌子。
是的,我可以向您展示示例,但是,已经编写了大量的SQL JOIN示例。如果你看过其中一个,并有疑问,请问它。但是,如果你没有看过的机会,让我不要花时间重新编写你可以更快速谷歌的东西。 (我不是想成为一个聪明的人,只是努力最有效地利用我和你的时间。)
你应该使用左连接吗?还是一个平等的联盟?我不知道,我不知道你的数据。如果要复制现在的代码,则使用左连接。然而,equ-join可能是你真正想要的。
答案 1 :(得分:1)
最大的问题是,在迭代第二个查询之后,你会获取返回的最后一行的“值”。
但是你不能依赖从数据库返回的行的顺序 - 所以你的查询是不确定的。