2014-07-20 2 views
0

내가 원하는 PHP 코드에 도달했습니다. 그것을 또 다시 반복하고 라운드 유지하기 때문에하지만 내 웹 사이트 mysql 쿼리는 2 개의 테이블에 따라 선택

$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" 

그리고 여기에해도 문제가 온다, 전에 내가 사용자 이름과 두 번째 테이블에 기록을 가지고 does't '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

이전의'mysql' PHP 확장은 좋은 이유로 사용되지 않습니다. 새로운 mysqli 확장 또는'PDO'로 포트를 옮기고'prepared statements'를 사용하여 시작해야합니다. – arkascha

답변

1

당신은 하나로이 작업을 수행 할 수 있습니다 작동하지 않는 soooo는 무겁다 질문. 논리를 따라 조금 어렵습니다,하지만 난이 원하는 쿼리 생각 : 데이터베이스의 작업을 수행

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

Exchange 테이블에 항목이 없으면 사용자 - exid 값이 있습니다. $ username - i.id 이것이 존재하지 않으면 계속 진행해야합니다. – Amromtm

관련 문제