PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Tuesday, February 22, 2022

[FIXED] multiple count and sum MySQL function returning wrong values with multiple joins in MySQL result

 February 22, 2022     mysql, php, phpmyadmin, sql     No comments   

Issue

Table mpkids_students AS A

id      BranchId    Email                   Mobile      StudentId
9497    25          mpsuraj2016@gmail.com   8700698773  25
9498    25          m016@gmail.com          8700698776  26

Table mpkids_student_image_gallery AS B

id      like_count  student_id
1       25          27

Table mpkids_visitors AS C

id      student_id
1       9497
2       9497
3       9497

Table mpkids_visitors_count AS D

id  visitor_count   student_id
1   4               23

Table mpkids_image_likes AS E

id  student_id
1   67

Table mpkids_relatives_data AS F

id  student_id  rel_email               rel_mobile
1   9497        kushwahji@gmail.com     9009859691
2   9497        kushwah@gmail.com       7566403326
3   9497        kushwah@gmail.com       1236403326
4   9497        suraj@gmail.com         123640332

Table mpkids_paidstatus AS G

id  student_id  Received
1   9497        7500
2   9497        3000
3   9497        3000

MYSQL QUERY

SELECT A.id as student_id,
COUNT(DISTINCT B.id) as images, 
COUNT(DISTINCT C.id)+ COUNT(DISTINCT D.visitor_count)  as visits, 
count(DISTINCT E.id) + SUM(B.like_count) as likes, 
COUNT(DISTINCT A.Email)+COUNT(DISTINCT F.rel_email)  as emails, 
COUNT(DISTINCT A.Mobile)+COUNT(DISTINCT F.rel_mobile)  as moibles, 
SUM(G.Received)  as Received 
FROM mpkids_students AS A 
LEFT JOIN mpkids_student_image_gallery AS B ON B.student_id = A.id 
LEFT JOIN mpkids_visitors AS C ON C.student_id = A.id 
LEFT JOIN mpkids_visitors_count AS D ON D.student_id = A.id 
LEFT JOIN mpkids_image_likes AS E ON E.student_id = A.id 
LEFT JOIN mpkids_relatives_data AS F ON F.student_id = A.id 
LEFT JOIN mpkids_paidstatus AS G ON G.student_id = A.id 
WHERE A.BranchId = 25 
GROUP BY A.id 
ORDER BY A.StudentId DESC

Result:

student_id  images  visits  likes   emails  moibles Received    
9497        0       3       NULL    4       5       202500  
9498        0       0       NULL    1       1       NULL    

Problem Explanation:

Received Field returning wrong value i have tried many queries but not getting solution Received Field correct value 13500 for student_id = 9497 Please help me to find solution.


Solution

You are getting wrong output because, when you are joining based on studentid, you are getting multiple records from mpkids_paidstatus table for each student, which is adding up and returning a wrong output.

You can also write your query like following using subquery.

SELECT A.id as student_id,
COUNT(DISTINCT B.id) as images, 
COUNT(DISTINCT C.id)+ COUNT(DISTINCT D.visitor_count)  as visits, 
count(DISTINCT E.id) + SUM(B.like_count) as likes, 
COUNT(DISTINCT A.Email)+COUNT(DISTINCT F.rel_email)  as emails, 
COUNT(DISTINCT A.Mobile)+COUNT(DISTINCT F.rel_mobile)  as moibles, 
(select SUM(Received) from mpkids_paidstatus ps where ps.student_id=a.id)  as Received 
FROM mpkids_students AS A 
LEFT JOIN mpkids_student_image_gallery AS B ON B.student_id = A.id 
LEFT JOIN mpkids_visitors AS C ON C.student_id = A.id 
LEFT JOIN mpkids_visitors_count AS D ON D.student_id = A.id 
LEFT JOIN mpkids_image_likes AS E ON E.student_id = A.id 
LEFT JOIN mpkids_relatives_data AS F ON F.student_id = A.id 

WHERE A.BranchId = 25 
GROUP BY A.id 
ORDER BY A.StudentId DESC


Answered By - PSK
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing