2017-06-02 17 views
-1

我創建了一個查詢,它返回下面的結果。結果返回後,有沒有辦法將這些結果拆分爲object_id?我試着用SQL中的object_id進行分組,但只返回來自對象ID:212的結果。如何分離使用PHP的SQL結果?

我只需要將這些結果分組以使用PHP進行顯示。任何幫助將不勝感激。謝謝!

SQL results

這裏是包含查詢我的PHP代碼:

$querystr = " 
    SELECT $wpdb->term_relationships.object_id, $wpdb->postmeta.meta_key, $wpdb->postmeta.meta_value 
    FROM $wpdb->term_relationships 
    INNER JOIN $wpdb->postmeta ON $wpdb->term_relationships.object_id = $wpdb->postmeta.post_id 
    WHERE $wpdb->term_relationships.term_taxonomy_id 
    IN (107, 108) 
    AND $wpdb->postmeta.meta_key 
    LIKE 'c%' 
    AND $wpdb->postmeta.meta_value != ''"; 

$pageposts = $wpdb->get_results($querystr, OBJECT); 
?> 

<?php if ($pageposts): ?> 
    <?php global $post; ?> 
    <?php foreach ($pageposts as $post): ?> 
     <?php print_r($post->object_id); ?> 
    <?php endforeach; ?> 
<?php else : ?> 
    error 
<?php endif; ?> 
+1

按'order_id'排序,然後在php中檢查當前行的'order_id'是否與以前不同。 –

+1

顯示你試過的代碼 –

+1

還有'GROUP_CONCAT'在mysql中有一個[體面的例子](http://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and- grouping-group_concat.php),你可以和'GROUP BY'一起使用,它會返回一個由一個可以很容易[爆炸]的角色分配的值列表(http://php.net/manual/function.explode.php )如果你想要一個數組。 –

回答

2

我感謝所有的迅速響應。感謝@JenneVanDerMeer,我設法通過將GROUP_CONCAT應用到meta_valueGROUP BYobject_id來返回分組值。工作查詢如下:

SELECT wp_term_relationships.object_id, 
GROUP_CONCAT(wp_postmeta.meta_value), wp_postmeta.meta_key 
FROM wp_term_relationships 
INNER JOIN wp_postmeta ON wp_term_relationships.object_id = 
wp_postmeta.post_id 
WHERE wp_term_relationships.term_taxonomy_id 
IN (107) 
AND wp_postmeta.meta_key 
LIKE 'c%' 
AND wp_postmeta.meta_value != '' 
GROUP BY wp_term_relationships.object_id 
0

一個簡單的ORDER BY會工作得很好這裏。

SELECT object_id, meta_value FROM <TABLE> ORDER BY object_id ASC

+0

這將完全像他張貼的圖像,並不真正的問題。當然,並不是所有問題中最清楚的。 –

+0

非常感謝您的建議@丹。但是使用'ORDER BY'只能對數據進行排序並且不會對它們進行分組。 – Raja

+0

那麼你是什麼意思的「組」呢?我想我不瞭解預期的結果。 –