简体   繁体   中英

PHP group mysql select by two columns

I have this table in MySQL:

表

I want to group select results by browser and version.

Wanted output:

Array
(
    [firefox 3.0] => 2
    [chrome 24.0] => 1
    [ie 9.0] => 2
    [ie 10.0] => 1
)

Question: How to group select to get wanted output?

Note: Table can contain more versions of browsers, so array will expand.

My try:

PHP:

public function get_browsers() {
    $query = "
        SELECT browser, COUNT(browser) AS num 
        FROM table
        GROUP BY browser 
        ORDER BY browser ASC
        ";
    $select = mysqli_query($this->c, $query);
    while ($row = mysqli_fetch_array($select)) {
        $data[$row['browser']] = (int) $row['num'];
    }
    return $data;
}

Current output:

Array
(
    [firefox] => 2
    [chrome] => 1
    [ie] => 3
)
public function get_browsers() {
    $query = '
        SELECT   browser, version, COUNT(*) AS num 
        FROM     table
        GROUP BY browser, version
    ';
    $select = mysqli_query($this->c, $query);
    while ($row = mysqli_fetch_array($select)) {
        $data[$row['browser'].' '.$row['version']] = (int) $row['num'];
    }
    return $data;
}
SELECT concat(browser," ", version) as browser, COUNT(browser) AS num 
        FROM table
        GROUP BY browser, version 
        ORDER BY browser ASC

The trick is to add the version as group criteria ;)

SELECT browser, CONCAT('browser', 'version') as bv COUNT(browser) AS num 
        FROM table
        GROUP BY bv 
        ORDER BY browser ASC
        ";

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM