2013-05-07 125 views
2

我在我的表中的列,infoanimal分組陣列在PHP

RABBIT || Male || 15 
HAMSTER || Female || 10 
FROG || Male || 5 
RABBIT || Male || 40 
HAMSTER || Male || 4 
FROG || Male || 13 

我有這個在以下時刻:

$sql = "SELECT * FROM experimental"; 
$query5 = mysql_query($sql); 
while ($dados = @mysql_fetch_array($query)){ 
    $infoanimal = $dados["infoanimal"]; 
    $pesquisa = explode(">>", $infoanimal); 
    $num_pesq = count($pesquisa); 
    for($i=1;$i<$num_pesq;$i++){ 
     $dadosx3 = explode("||", $pesquisa[$i]); 
     $animal[0] = $dadosx3[0]; 
     $gender[0] = $dadosx3[1]; 
     $amount[0] = $dadosx3[5]; 
    } 
} 

我想提出以下幾點:

Animal || Male || Female || Sum 
HAMSTER || 4 || 10  || 14 
FROG || 18 || 0  || 18 
RABBIT || 40 || 0  || 40 
+0

你能解決你的格式嗎?用4個空格縮進代碼,並確保它前面有一個空行。 – dave 2013-05-07 20:03:16

回答

0
SELECT animal, 
     SUM(CASE gender WHEN 'male' THEN amount ELSE 0 END) AS male, 
     SUM(CASE gender WHEN 'female' THEN amount ELSE 0 END) AS female, 
     SUM(amount) AS `sum` 
FROM infoanimal 
GROUP BY 
     animal 
+0

「Infoanimal」是我列表中的一列,每行有這個信息動物||性別||數量>>動物||性別||數量>>動物||性別||數量>>動物||性別||數量等等等等 – 2013-05-07 20:11:09

0

我不會Concat的那些在一個SQL策LL,但其存儲在不同的細胞:

create table animal_info (
    some_row_id int, 
    animal_name varchar, 
    animal_gender enum('Male','Female','Herma'), 
    number_animals int); 

然後

SELECT 
    animal_name as animal, 
    sum(if(animal_gender = 'Male', number_animals, 0)) as male, 
    sum(if(animal_gender = 'Female', number_animals, 0)) as female, 
    sum(number_animals) as sum 
FROM 
    animal_info 
WHERE 
    some_row_id = <row of old entry> 
GROUP BY animal_name 
; 

如果表變長,想想動物表,並引用它,而不是對每家店鋪或任何存儲的動物名稱連接到他們

+0

some_row_id存儲在你的原始表格中,而不是長文本,你甚至可以加入我的select作爲子選擇。 – flaschenpost 2013-05-07 20:14:04

+0

我設法做到以下代碼,但它顯示如下:
$ animais = array($ array);
的foreach($ animais爲$ linha)
{$ GRUPO [$ linha [0]] [] = $ linha [1];}
的foreach($ GRUPO爲$ X => $ y)的
{$總數='';
$ col1 [] = $ x;
$ col2 [] = array_sum($ y);
$ total = array_sum($ y);}
echo $ x。「 - 」。$ genero [0]。「 - 」。$ total。「
」;}
我不想要名稱要重複
鼠標 - 女性 - 32
鼠標 - 女性 - 77
倉鼠 - 男 - 168
倉鼠 - 男 - 168
2013-05-07 20:37:32

+0

分裂和在PHP分組陣列將比MySQL中的分組要慢得多,並且如果數據來自外部,您可以在存儲之前簡單地分割它們。 只要請求來過濾數據(例如,有人只想看到女性號碼),問題就會變得更大。 你有沒有隱藏或很好的理由不使用額外的表?也許這很容易解決,比手動分割數據更容易。 – flaschenpost 2013-05-07 20:53:30