2014-07-20 58 views
0

我已經達到了我想要的php代碼。但是,我的網站速度太慢,因爲它保持了一遍又一遍重複,圓,mysql query根據2個tabels選擇

$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)); 

其實我可以解釋代碼多一點, 我需要選擇從第一個表中的最高每次點擊費用列 但也確保:

type = '".follow."' AND active=1 And username !='".$username."' ORDER BY cpc DESC" 

這裏來的問題, 延續之前我需要確保的是,「ID」字段形成第一臺開不得到記錄與用戶名的第二個表,

它得到的結果會重複使用下一行, 一遍又一遍,直到找到滿足這兩個表的結果。 這種方法SOOOO重

我希望得到一個簡單且輕量的方式,感謝

我試圖做到這一點,但它不工作

$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

舊的'mysql' php擴展名被棄用是有原因的。你真的應該移植到更新的'mysqli'擴展名或'PDO'並開始使用'prepared statements'。 – arkascha

回答

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; 

做數據庫的工作通常比通過在應用循環行快得多。畢竟,這就是數據庫的優點 - 管理和查詢大量數據。

+0

其實我需要如果沒有條目交換表得到的值 用戶 - exid $ username - i.id 如果這不存在是應該繼續 – Amromtm