i want to count multiple values from 3 columns and sorted descending using PHP mysqli, and I can’t do it.
name1 | name2 | name3 |
---|---|---|
mike | jack | rose |
jack | mike | Mary |
jack | Mary | John |
expect output:
jack 3 mike 2 mary 2 rose 1 John 1
My code:
$query = "select count(*) as c from work" ; $result = $con->query($query); $count = $result->fetch_object()->c;
Advertisement
Answer
Use UNION
to get them all into a single column. Then use COUNT(*)
and GROUP BY
:
$query = " SELECT name, COUNT(*) AS c FROM ( SELECT name1 AS name FROM work UNION ALL SELECT name2 AS name FROM work UNION ALL SELECT name3 AS name FROM work ) AS x GROUP BY name ORDER BY c DESC"; $result = $con->query($query); while ($row = $result->fetch_object()) { echo "$row->name $row->c<br>"; }