2017-12-27 43 views
0

누군가가이 문제를 해결할 수 있기를 바랍니다. 같은 문제에 대해 많은 질문을 읽었지만 아무도 내 질문에 대답하지 않습니다. 내 PHP 코드에서 다음과 같은 SQL SELECT 문이 :mysql select 문에서 중복 행을 제거하십시오.

$sql = " 
     SELECT DISTINCT 
      pics.piclocation, 
      pics.picid, 
      rating 
     FROM 
      pics, 
      ratings 
     WHERE 
      pics.milfid = ratings.picid 
     ORDER BY 
      ratings.rating DESC 
     "; 

그러나 많은으로 DISTINCT 키워드가 중복 행을 항상 제거하지 않습니다 알고있다. 문제는 동일한 사진이 두 번 이상 자주 출력되는 것입니다 (즉, pics.piclocation). 아이디어는 각 사진마다 1에서 5까지 등급이 매겨진 다음 등급 테이블에 삽입됩니다.

출력을 생성하고 중복 된 piclocation 행을 제거하는 방법에 대한 아이디어가 있습니까? 그 그림이 가장 도움이된다면 어떤 그림이 가장 많은 점수를 받았는지에 따라 그림을 나열하고 싶습니다.

감사합니다.

+0

무엇 필드 (들)을 실제로 별개의 사진을 확인하는 데 사용할 수 있습니다? – prodigitalson

+0

사진과 등급 테이블에 picid가 있다고 가정합니다. 나는 정직하지 않을거야. –

답변

1

를 만 다음 가서 그에서 선택한 5의 등급이 이미지를 원하는 그렇다면, 당신은 5의 해당 이미지의 수를 셀 수 그것에 의해 얻고 질서있다. 또한 pics.milfidratings.picid과 같은 이미지의 고유 식별자로 그룹화해야합니다. 그냥 가장 높은 평가 그림을 원 대신하는 경우

SELECT 
     pics.piclocation, 
     pics.picid, 
     COUNT(ratings.rating) as nb_ratings 
    FROM 
     pics, 
     ratings 
    WHERE 
     pics.milfid = ratings.picid 
     AND ratings.rating = 5 
    GROUP BY 
     ratings.picid 
    ORDER BY 
     nb_ratings DESC 

, 당신은 등급을 SUM 수 :

SELECT 
     pics.piclocation, 
     pics.picid, 
     SUM(rating) as total_rating 
    FROM 
     pics, 
     ratings 
    WHERE 
     pics.milfid = ratings.picid 
    GROUP BY 
     ratings.picid 
    ORDER BY 
     total_rating DESC 
0

SQL에서 여러 개의 필드가 DISTINCT 절과 함께 추가 될 수도 있습니다. DISTINCT은 선택된 모든 필드가 동일한 행을 제거합니다.

SELECT DISTINCT column1, column2, ... 
FROM table_name; 

그래서 당신이 시도 할 수 있습니다 :

$sql = "SELECT DISTINCT 
       pics.piclocation, 
       pics.picid, 
       ratings.rating 
     FROM pics JOIN ratings ON pics.milfid = ratings.picid 
     ORDER BY ratings.rating DESC";