2017-01-15 15 views
0

これに関する知識が不足しています。私はPHPとMySQLのクエリに限られた経験があります。私はいくつかの基本的な質問をすることができますが、これは私が私を混乱させるものを修正する必要があるものです。MySQL Distinct Inner Join

賞を授与された製品のすべてのデータを取得するクエリがあります。ただし、1つの商品に複数の特典がある場合、その商品は複数回表示されます。理想的には、私は一度その製品を見せたいと思う。

私は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

のような選択を使用する必要があり、COL1 COL2、およびCOL3です。それは良いことではありません。あなたは1だけ必要です!今のところPHPについては忘れてください。http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-を参照してください。非常に単純なSQLクエリ – Strawberry

+0

あなたが持っているクエリは、完全な混乱、btwです。申し訳ありませんが、最初からやり直す必要があります – Strawberry

+0

フィードバックをいただきありがとうございます。コードを継承し、私が理解していないことを修正する必要がある状況に遭遇しました。 – Meadsy

答えて

0

あなたは異なったがassuminng、あなたは明確な結果が必要な場合はあなたがそうexplicitallyあなたは明確な価値をしたいだけの列

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

を選択する必要があり役に立たない

あるので、あなたはすべての列を選択*した場合あなたが必要とする列には、あなたがあなたがここ1つの+ n個のクエリを持って

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