2017-01-15 1 views
0

제 지식이 부족합니다. PHP와 MySQL 쿼리에 대한 경험이 제한되어 있습니다. 나는 기본적인 쿼리를 할 수 있지만, 이것은 내가 혼란스러워하는 것을 고칠 필요가있는 것이다.MySQL Distinct Inner Join

나는 보너스가 지정된 제품에 대한 모든 데이터를 가져 오는 쿼리가 있습니다. 그러나 하나의 상품에 여러 상품이있는 경우 해당 상품이 여러 번 표시됩니다. 이상적으로 나는 그 제품을 한 번 보여 주길 바란다.

쿼리에 DISTINCT 또는 UNIQUE 값을 적용하려고합니다.하지만 쿼리가 생성되는 방식은 아무 것도 수행하지 않습니다.

<?php 
        $get_awards = $wpdb->get_results(" 
SELECT * 
    FROM wp_posts 
WHERE post_type = 'award' 
    AND post_status = 'publish' 
    AND YEAR(CAST(post_date AS DATE))=2009 
GROUP 
    BY post_title 
ORDER 
    BY post_date DESC 
"); 
        foreach ($get_awards as $award) { 
         $get_products = $wpdb->get_results("SELECT * FROM wp_posts INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id WHERE post_type = 'ice-cream' AND post_status = 'publish' AND meta_key = 'awards' AND meta_value LIKE '%''".$award->ID."''%' OR post_type = 'frozen-yoghurt' AND post_status = 'publish' AND meta_key = 'awards' AND meta_value LIKE '%''".$award->ID."''%' OR post_type = 'sorbet' AND post_status = 'publish' AND meta_key = 'awards' AND meta_value LIKE '%''".$award->ID."''%'"); 
         foreach ($get_products as $product) { ?> 

나는 SELECT DISTINCT 등하지만 기쁨의 SELECT *을 변경하는 몇 가지 버전을 시도 :

원래 쿼리는 다음과 같다. 아무도 내게 몇 가지 포인터를 주시겠습니까?

+0

여기에 1 + n 개의 쿼리가 있습니다. 그 좋지 않다. 당신은 오직 1이 필요합니다! 지금 PHP에 대해서는 잊어 버리고 http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-를 참조하십시오. very-simple-sql-query – Strawberry

+0

그리고 당신이 가지고있는 질의는 엉망입니다. 죄송 합니다만, 다시 시작해야합니다. – Strawberry

+0

의견을 보내 주셔서 감사합니다. 코드를 상속 받았으며 이해할 수없는 부분을 수정해야하는 상황에 처하게되었습니다. – Meadsy

답변

0

당신은 별개가 unuseful 그래서 당신이 assuminng, 당신은 뚜렷한 결과가 필요한 경우

당신이

Group by is for aggreagtion function and is not necessary for distinct clause 

때문에 별개의 값을 할 열 explicitally 만 선택해야합니다 모든 열을 선택 * 경우 필요한 열은 col1, col2 및 col3뿐입니다. 같은 것을 사용해야합니다.

SELECT DISTINCT col1, col2, col2 
    FROM wp_posts 
    WHERE post_type = 'award' 
    AND post_status = 'publish' 
    AND YEAR(CAST(post_date AS DATE))=2009 
    GROUP BY post_title 
    ORDER BY post_date DESC 
+0

내 downvote, 누군가가 묻는다면. – Strawberry