2013-07-25 103 views
0

返回的每一个元素的计数这是我的查询:获得通过MySQL查询

SELECT `Brand`,`Colour`,`Occassion`,`Fabric`,`Type` 
FROM `deals` 
WHERE `Size` 
LIKE '%XS%'; 

它返回35个结果。现在,我想要的是每个列(品牌,颜色等)的计数,这些列出现在上述结果集中以创建直方图。我不知道如何做到这一点。

任何帮助表示赞赏。

+0

定义*目前*。不是空的?不是'null'? –

+0

列有一些值,如果没有,则为空。 –

+0

好的,现在定义*值*和*空* – sgroves

回答

1

我认为理想的结果应该是这样的:

$data = array(
    "Brand" => array(brand1 => 1, brand2 => 2), 
    "Colour" => array(colour1 => 1, colour2 => 2), 
    "Occassion" => array(Occassion1 => 1, Occassion2 => 2), 
); 

对于每个子阵列我们可以得出一个直方图。该代码将是这样的:

$query = " 
SELECT 
    `Brand`,`Colour`,`Occassion`,`Fabric`,`Type` 
FROM 
    `deals` 
WHERE 
    `Size` LIKE '%XS%'"; 

$data = array(
    "Brand" => array(), 
    "Colour" => array(), 
    "Occassion" => array(), 
    "Fabric" => array(), 
    "Type" => array(), 
    ); 

if ($result = $mysqli->query($query)) { 

    /* fetch associative array */ 
    while ($row = $result->fetch_assoc()) { 
     foreach($row as $key => $value) 
     { 
      $data[$key][$value]++; 
     } 
    } 

    /* free result set */ 
    $result->free(); 
} 

或者,我们可以定义里面的foreach $数据子阵,使程序更加灵活:

$data = array(); 
... 
    foreach($row as $key => $value) 
    { 
     if(!isset($data[$key])) 
     { 
      $data[$key] = array(); 
     } 
     $data[$key][$value]++; 
    } 
... 
+0

看起来像一个解决方案。我会试试看看它是否有效。谢谢您的帮助。 –