2012-10-27 48 views
0

我有它運行MySQL查詢並返回結果爲數組下面的PHP代碼:按名稱與分隔符組合數組項目?

function mysql_resultTo2DAssocArray ($result) { 
    $i=0; 
    $ret = array(); 
    while ($row = mysql_fetch_assoc($result)) { 
     foreach ($row as $key => $value) { 
      $ret[$i][$key] = $value; 
      } 
     $i++; 
     } 
    return ($ret); 
    } 
$compare = mysql_resultTo2DAssocArray(mysql_query("SELECT Temp.School, Temp.Status, Snow.Token FROM Temp 
JOIN Snow ON Temp.School = Snow.School")); 

這樣做的結果是這樣的:

Array 
(
    [0] => Array 
     (
      [School] => School Name 1 
      [Status] => Delayed Two Hours 
      [Token] => Token1 
     ) 

    [1] => Array 
     (
      [School] => School Name 1 
      [Status] => Delayed Two Hours 
      [Token] => Token2 
     ) 

) 

是否有可能在Token項目相結合通過這些數組中的逗號,如果School項目是相同的每個?

有一件事是,有可能在全局數組中有更多的數組,不同的School名稱不應該分組,而應該單獨存在。基本上,只有在School相同時纔可以進行分組。也可以有兩個以上的令牌。

回答

2
SELECT Temp.School, Temp.Status, GROUP_CONCAT(Snow.Token) Tokens 
FROM Temp JOIN Snow USING (School) 
GROUP BY Temp.School 

這不是完全有效的,這是因爲Status列不聚集或GROUP BY的一部分;但MySQL通常允許它(有一個選項可以禁止它,我不記得名字)。如果有不同狀態值的行,它將任意選擇其中一個;你沒有說出不同的狀態會發生什麼。