我已经达到了我想要的PHP代码。但是我的网站太慢了,因为它一遍又一遍地重复着,
$pages= mysql_query("SELECT * FROM ex_instagram_p WHERE type = '".follow."' AND active=1 And username !='".$username."' ORDER BY cpc DESC" );
$prow = mysql_fetch_array($pages);
Do{
$dollowed = mysql_query("SELECT * FROM exchanges WHERE user = '".$username."' AND exid = '".$prow['id']."'");
$followed = mysql_num_rows($dollowed);
;}while($followed > 0 && $prow = mysql_fetch_array($pages));
其实我可以多解释一下代码, 我需要从第一个表中选择最大CPC行 但也要确保:
type = '".follow."' AND active=1 And username !='".$username."' ORDER BY cpc DESC"
这就是问题, 在继续之前我需要确保' id'第一个表的字段表格在第二个表上没有用户名
的记录是否有结果它会再次使用下一行重复, 一遍又一遍,直到找到满足两个表格的结果。 这个方法太重了
我希望得到一种更简单,更轻松的方式,谢谢
我试图这样做,但它不起作用
$prow= mysql_query("SELECT *
FROM (mysql_query("SELECT * FROM ex_instagram_p WHERE type = '".follow."' AND active=1
And username !='".$username."' ORDER BY cpc DESC" );)
INNER JOIN (mysql_query("SELECT * FROM exchanges WHERE user = '".$username."'");)
ON ex_instagram_p.id=exchanges.exid";);
答案 0 :(得分:1)
您可以在一个查询中执行此操作。遵循逻辑有点难,但我认为这是您想要的查询:
SELECT i.*
FROM ex_instagram_p i join
exchanges e
on i.id = e.exid
WHERE i.type = '".follow."' AND i.active=1 And
i.username <> '".$username."' and e.user = '".$username."'
ORDER BY i.cpc DESC
LIMIT 1;
在数据库中完成工作通常比在应用程序中循环遍历要快得多。毕竟,这就是数据库的优点 - 管理和查询大量数据。