2011-11-10 4 views
0

아마도 여기에 마음 블록이있을 수 있지만이 쿼리에서 AND 절이 올바르게 작동하는 것 같습니다. 난 단지 결과를 반환 할 위치 tbl_mod_Lessons.Approved = 1Mysql이 쿼리에 AND 절을 추가하십시오.

$sql = "SELECT *, 
       (SELECT AVG(intRating) FROM tbl_mod_LessonReviews LR WHERE LR.intLessonID = LS.intLessonID) rating, 
       (SELECT strContentArea FROM tbl_mod_ContentAreas CA WHERE CA.intCAID = LS.intContentAreaID) strContentArea 
      FROM tbl_mod_Lessons LS 
      WHERE 
       (LS.strTitle LIKE $search_string) OR 
       (LS.strStandards LIKE $search_string) OR 
       (LS.strDescription LIKE $search_string) OR 
       (LS.strActivities LIKE $search_string) OR 
       EXISTS(SELECT strContentArea FROM tbl_mod_ContentAreas CA WHERE CA.intCAID = LS.intContentAreaID AND (CA.strContentArea LIKE $search_string)) 
       AND (LS.Approved = 1) 
      ORDER BY ".$pager->getOrder("LS.intLessonID DESC")." 
      LIMIT ".$pager->PageLimits(); 

당신은, IV 그것을에서 추가하려고 볼 수있는이 = 0 승인 쿼리하지만 돌아 오는 결과를 중단하지 않는 한.

+0

OR이 (가) AND 이상 거주 할 수도 있습니다. OR 덩어리를 괄호 안에 넣으면 수정해야합니다. 있는 그대로, 그것은 EXISTS() 및 Approved = 1을 평가 한 다음 다른 OR 물건을 평가합니다. –

답변

1

다음을 시도해보십시오. OR 절 주위에 대괄호를 추가했습니다.

$sql = "SELECT *, 
       (SELECT AVG(intRating) FROM tbl_mod_LessonReviews LR WHERE LR.intLessonID = LS.intLessonID) rating, 
       (SELECT strContentArea FROM tbl_mod_ContentAreas CA WHERE CA.intCAID = LS.intContentAreaID) strContentArea 
      FROM tbl_mod_Lessons LS 
      WHERE (
        (LS.strTitle LIKE $search_string) OR 
        (LS.strStandards LIKE $search_string) OR 
        (LS.strDescription LIKE $search_string) OR 
        (LS.strActivities LIKE $search_string) OR 
        EXISTS(SELECT strContentArea FROM tbl_mod_ContentAreas CA WHERE CA.intCAID = LS.intContentAreaID AND (CA.strContentArea LIKE $search_string)) 
       ) 
       AND (LS.Approved = 1) 
      ORDER BY ".$pager->getOrder("LS.intLessonID DESC")." 
      LIMIT ".$pager->PageLimits(); 
1

당신은 ()으로 AND

WHERE 
       ((LS.strTitle LIKE $search_string) OR 
       (LS.strStandards LIKE $search_string) OR 
       (LS.strDescription LIKE $search_string) OR 
       (LS.strActivities LIKE $search_string) OR 
       EXISTS(SELECT strContentArea FROM tbl_mod_ContentAreas CA 
       WHERE CA.intCAID = LS.intContentAreaID 
       AND (CA.strContentArea LIKE $search_string))) 
       AND (LS.Approved = 1) 
0

서라운드에서 다른 모든 or 절을 구분하기 위해 주위의 모든 OR 조건처럼 괄호를 추가해야합니다. 그렇지 않으면 당신은 단지 AND 마지막 절입니다.

+0

감사합니다 얘들 아, 내가 놓친 게있다 !! – user794846

관련 문제