2011-08-07 2 views
3

안녕하세요 저는 제대로 작동하려면 mysql 쿼리를 얻으려고 노력하고 있습니다.하지만 솔직히 말해서 어디서부터 시작해야할지 모르겠지만 카운트 기능은 작동하지만 확실하지는 않습니다.적어도 x 개의 행을 MySQL에서 얻으십시오

내가 뭘하려는 건 5 개 미만의 행이 다른 쿼리/where 절에 도달 할 때까지 결합보다 적은 수를 계산하면됩니다.

그래서 기본적으로 적어도 5 개 행을 가서 5에 도달 할 때 더 때까지 행을 조인하여 계속 ...

$myquery_mysql = mysql_query("(SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' AND city = '".mysql_real_escape_string($GLOBALS['user_city'])."') 
    UNION ALL 
    (SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' AND province = '".mysql_real_escape_string($GLOBALS['user_province'])."') 
    UNION ALL 
    (SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1')" or die(mysql_error()); 

나는

  $myquery_mysql = mysql_query("(SELECT title, city, ad_image, rent, uniqid count(if title > 5) THEN FROM rentals WHERE front_page_ad = '1' AND paid = '1')" 
    UNION ALL 
    (SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' AND province = '".mysql_real_escape_string($GLOBALS['user_province'])."') 
    ELSE FROM rentals WHERE front_page_ad = '1' AND paid = '1')" END ; 

or die(mysql_error()); 

내가이 ISN을 알고 ... 같은 것을 할 것 '맞아,하지만 난 그걸 알아 내려고 노력하고있어.

답변

2

마지막으로 LIMIT 5을 추가 할 수 있으므로 모든 조합으로 전체 쿼리를 수행 한 다음 상위 5 개 결과를 선택합니다. 주문 번호를 지정하지 않으면 노조를 명령하십시오.

그래서 첫 번째 쿼리에 5 개의 결과가있는 경우이를 가져오고 그렇지 않은 경우 다음 2 개의 유니온에서 결과를 가져옵니다. 당신의 노동 조합이 시간을 많이 소비하지 않는 한 이것은 좋은 행동 방침처럼 보입니다.

+0

내가 생각하고 있었지만 모든 쿼리를 선택해야하므로 13 개가 모두 필요하면 13 개가됩니다. – Tianbo84

+0

오, 제 실수입니다. 그 일을하는 우아한 방법이 있는지 나는 모른다. 최악의 경우에, 당신은 그 결과의 수를 계산하기 위해 먼저 질의를 할 수 있고, 5보다 적은 수라면, 당신은 나의 방법을 사용합니다. 그렇지 않다면 당신은 도시와 지방을 가진 모든 것을 선택하기 만하면됩니다. –

+0

아하 나는 이것을 할 방법이 없을지도 모른다고 생각하고 있었다. 내 새로운 방법은 다음과 같을 것이다. $ city_num_rows = mysql_num_rows ($ myquery_mysql); if ($ city_num_rows <5) {// do here}'- 고마워. – Tianbo84

0

내가 할 것 :

  • 는 비교하여
  • 순서가 desc 그래서 일치하는 값이 일치하지 않는 이상 주문 값 모든 비교를 사용하여 조인 왼쪽
  • 사용 (null 될 것이다) 제한 5
관련 문제