简体   繁体   中英

How to count number of rows with the same column data and display to table?

I have 2 tables, the 'department' and 'document'.

Table department

| doc_id |      dept_name        |
----------------------------------
|      1 | Information Technology| 
|      2 | Software Development  | 
|      3 | Human Resource        |  
|      4 | Accounting            | 
|      5 | Support               |

Table document

| doc_id | doc_name    | author    |  description | department             |
----------------------------------------------------------------------------
|      1 | Maps        |  User1    |  sample      | Information Technology |
|      2 | Audits      |  User3    |  sample      | Software Development   |
|      3 | Image       |  User1    |  sample      | Information Technology |
|      4 | Papers      |  User4    |  sample      | Human Resource         |
|      5 | Print Screen|  User1    |  sample      | Software Development   |
|      6 | Transaction |  User3    |  sample      | Accounting             |
|      7 | Graph       |  User1    |  sample      | Support                |
|      8 | Excel       |  User1    |  sample      | Information Technology |

Now, I want to display the table with two columns: department and total_doc.

Output:

|      department       |total_doc|
-----------------------------------
| Information Technology| 3       |
| Software Development  | 2       |
| Human Resource        | 1       |
| Accounting            | 1       |
| Support               | 1       |

I want to display the total document inside the department and arrange them in ascending order.

Here's my query.(not sure)

SELECT department, count(doc_name) as 'total_doc' FROM tbl_document GROUP BY doc_name

I'm using MVC pattern in Codeigniter.

$this->db->select("department, count(doc_name) as 'total_doc'");
$this->db->from('document');
$this->db->group_by('doc_name');

Also, How can I display this in table? like using foreach in html?

You need to do group by with department not with doc_name .

$this->db->select("department, count(doc_name) as 'total_doc'");
$this->db->from('document');
$this->db->group_by('department');
$result = $this->db->get()->result();

Hope This will help you.

foreach ($result as $row)
{
    echo $row->department."----".$row->total_doc;
}

here you go

SELECT dept_name,COUNT(td.department) FROM department d
LEFT JOIN tdocument td ON td.`department`=d.`dept_name`
GROUP BY td.`department` ORDER BY COUNT(td.`department`) DESC;

You want one line per department . IN SQL words: You want to group by department .

select department, count(*) as total_doc from document group by department;

(BTW: don't use single quotes for column aliases.)

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