I wanted to count and sum all of bits column in my table if the sum of it is greater than 2 the isApprove
column in my documents
table will be 1.
SELECT document_id,
SUM(CASE WHEN isApprove = 1 THEN 1 ELSE 0 END) AS approveBy
FROM approvals_document
Output:
document_id | approveBy
96 2
I wanted to join the related table for approvals_document
which is documents
using this.
SELECT document_id, D.isApprove,
SUM(CASE WHEN isApprove = 1 THEN 1 ELSE 0 END) AS approveBy
FROM approvals_document AD
INNER JOIN documents D ON D.id = AD.document_id
But it won't join the isApprove
column. Which part am I missing? Any help would appreciated!
approvals_document
column
id | document_id | isApprove
documents
column
id | isApprove
Draft output:
document_id | approveBy | isApprove(documents table)
96 2 0
Youre missing an equals in the join clause, in the ON, and you need to alias the case:
SELECT document_id, D.isApprove,
SUM(CASE WHEN AD.isApprove = 1 THEN 1 ELSE 0 END) AS approveBy
FROM approvals_document AD
INNER JOIN documents D ON D.id = AD.document_id
Try with the below query using LEFT JOIN
AND GROUP BY
.
SELECT d.id,
d.isApprove,
SUM(CASE WHEN ad.document_id IS NULL THEN 0 ELSE 1 END) AS approveBy
FROM documents d
LEFT JOIN approvals_document ad
ON ad.isApprove =1 and ad.document_id = d.id
GROUP BY d.id,d.isApprove
You are trying to list all documents and number of approvedBy:
try:
SELECT documents.id,
documents.isApprove,
(select count(*) from approvals_document WHERE approvals_document.isApprove =1 and approvals_document.document_id = documents.id) as approveBy
FROM documents;
will give you
+------------+--------------------+--------------------------+
| documet.id | isapproved or not, | number of times approved |
+------------+--------------------+--------------------------+
| 1 | 1 | 2 |
+------------+--------------------+--------------------------+
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.