2011-11-21 18 views
0

我有一小段代碼,我試圖把我的大腦包裝好幾個小時。PHP:循環遍歷分組的SQL查詢數組,但每個「分組」都回顯一次值?

我想創建一個查詢,它檢索一些元素,並最終通過選擇器對它們進行分組。 我會試着證明:我在查詢組織中的所有成員。每個成員都是「部門」的成員,每個部門可以有多個成員,但每個成員只有一個部門。

所以我創建了查詢來按部門選擇我的組織組中的所有成員。

當我使用簡單的foreach($my_query as $q) …顯示它時,我想要輸出$q->department_name,但僅對該部門輸出一次。現在它說所有五名成員的「營銷」,然後它變成所有成員的「人力資源」。我嘗試了一些不同的方法,例如array_unique,創建一個函數來檢查字符串,看看它是否相同,但沒有結果。

我可以創建兩個foreach循環,但如果它在所有可能不是我更喜歡,因爲兩個foreach循環會影響性能。

任何幫助或建議將非常感激。

Sinerely
- Mestika

---編輯--- 順便說一句,我的查詢看起來是這樣的:

SELECT * 
FROM wp_term_taxonomy AS cat_term_taxonomy 
INNER JOIN wp_terms AS cat_terms ON cat_term_taxonomy.term_id = cat_terms.term_id 
INNER JOIN wp_term_relationships AS cat_term_relationships ON cat_term_taxonomy.term_taxonomy_id = cat_term_relationships.term_taxonomy_id 
INNER JOIN wp_posts AS cat_posts ON cat_term_relationships.object_id = cat_posts.ID 
INNER JOIN wp_postmeta AS meta ON cat_posts.ID = meta.post_id 
WHERE cat_posts.post_status = 'publish' 
AND meta.meta_key = 'active' 
AND meta.meta_value = 'active' 
AND cat_posts.post_type = 'member' 
AND cat_term_taxonomy.taxonomy = 'deparment' 
GROUP BY cat_terms.slug, cat_term_relationships.object_id 
+0

如果沒有一些代碼,這是很難說,如果優化應該在你的MySQL選擇或者在PHP代碼中完成... –

回答

2
$prev_department = NULL; 

foreach ($my_query AS $q) 
{ 
    if ($prev_department != $q->department_name) 
    echo '<h2>'. htmlentities($q->department_name, ENT_COMPAT, 'UTF-8') .'</h2>'; 

    // ... 

    $prev_department = $q->department_name; 
}