MySQL - Atla Duplicate WordPress Yazılar

3 Cevap php

Ben 10 en son "aktif" WordPress blog mesajları (En yeni yorumlar ile yani olanlar) görüntülemek için bir komut dosyası yazıyorum. Sorun liste çiftleri bir şey vardır, olduğunu. Ben çiftleri ayıklamak istiyorum. MySQL sorgusu değiştirerek bunu yapmanın kolay bir yolu (gibi, NEREYE IGNORE) veya diğer bazı araçlar var mı? İşte ben bugüne kadar ne var:

<?php

function cd_recently_active() {
    global $wpdb, $comments, $comment;
    $number = 10; //how many recently active posts to display? enter here

if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
    $comments = $wpdb->get_results("SELECT comment_date, comment_author, comment_author_url, comment_ID, comment_post_ID, comment_content FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT $number");

    wp_cache_add( 'recent_comments', $comments, 'widget' );
}
?>

3 Cevap

SELECT deyimi için DISTINCT seçeneği bakmak. Veya alternatif sözdizimi BY GROUP (aynı linke bak). Farklı şekillerde çalışmak olsa da, bunlar tam olarak ne istediğinizi almak için iki yöntem büyük olasılıkla olacaktır.

Ben GROUP BY kullanarak anladım düşündüm, ama şimdi o kadar emin değilim. İşte kod:

    if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
	$comments = $wpdb->get_results("SELECT comment_post_ID, comment_author, comment_date FROM $wpdb->comments WHERE comment_approved = '1' GROUP BY comment_post_ID ORDER BY comment_date_gmt DESC LIMIT $number");
	wp_cache_add( 'recent_comments', $comments, 'widget' );
}

Tek değişiklik, GROUP BY comment_post_ID (Ben benzersiz olmak istedim alanı) eklemektir. Ne yazık ki, bu "tatili" fonksiyonu; donmuştur ve güncelleme değildir.

Ben de işe DISTINCT alamadım. Ben bu anlamaya üzerine takip ediyorum One comment http://www.webmasterworld.com/forum88/9204.htm geldi

Özellikle, yorum #:.. 1259236 ergophobe tarafından b / satırda c verilen topic_id için birden çok sonuç farklı olmayacaktır alacak, O olmadan GROUP BY dışarı bıraktı "diyor Aslında, {[(0)] } "

Hala arıyor ....

Bu bir dizi ile tespit edildi. Ben iki ayrı sorgu yürütme dışındaki MySQL ile bunu yapmak için bir yol olduğundan emin değilim.