Solved

mysql sum total amout

Posted on 2011-03-13
15
320 Views
Last Modified: 2012-05-11
table member have a column staff1, and staff2 that take care for customer how can i can count the amount of people that  each staff take care
CREATE TABLE IF NOT EXISTS `member` (
  `idmember` int(11) NOT NULL AUTO_INCREMENT,
  `own` varchar(255) DEFAULT NULL,
  `Sname` varchar(255) DEFAULT NULL,
  `Ssurname` varchar(255) DEFAULT NULL,
  `Sex` enum('¿','¿') NOT NULL,
  `Hno` varchar(255) DEFAULT NULL,
  `Moo` varchar(255) DEFAULT NULL,
  `tambol` enum('¿¿¿¿¿¿¿¿¿','¿¿¿¿¿¿¿') NOT NULL,
  `dateofbirth` date DEFAULT NULL,
  `migratedate` date DEFAULT NULL,
  `status` enum('5','4','3','2','1') DEFAULT '5',
  `Unit` int(4) DEFAULT NULL,
  `staff1` int(11) DEFAULT NULL,
  `staff2` int(11) DEFAULT NULL,
  PRIMARY KEY (`idmember`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5186 ;




CREATE TABLE IF NOT EXISTS `staff` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `surname` varchar(255) DEFAULT NULL,
  `remark` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

Open in new window

0
Comment
Question by:teera
  • 6
  • 4
  • 3
  • +1
15 Comments
 
LVL 5

Expert Comment

by:mayankagarwal
Comment Utility
select a.id, a.name, a.surname, (select count(b.*) from member b where member where b.staff1 = a.id or b.staff2 = a.id) as count_customer from staff a
0
 

Author Comment

by:teera
Comment Utility
Hi mayankagarwal
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) from member b where member where b.staff1 = a.id or b.staff2 = a.id) as count' at line 1
0
 
LVL 5

Expert Comment

by:mayankagarwal
Comment Utility
select a.id, a.name, a.surname, (select count(b.idmember) from member b where b.staff1 = a.id or b.staff2 = a.id) as count_customer from staff a
0
 
LVL 19

Expert Comment

by:Bhavesh Shah
Comment Utility

SELECT A.id, A.name, A.surname, Count(B.idmember)CustomerCount
FROM Staff A LEFT OUTER JOIN member B
ON B.staff1 = A.id
OR B.staff2 = A.id
0
 
LVL 5

Expert Comment

by:mayankagarwal
Comment Utility
SELECT A.id, A.name, A.surname, Count(B.idmember) as CustomerCount
FROM Staff A LEFT OUTER JOIN member B
ON (B.staff1 = A.id
OR B.staff2 = A.id)
0
 
LVL 2

Expert Comment

by:sihar86
Comment Utility
what is the difference staff1 and staff2?
0
 
LVL 5

Expert Comment

by:mayankagarwal
Comment Utility
according to me there can be two staff member catering to the same customer
0
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 2

Expert Comment

by:sihar86
Comment Utility
Thanks for explanation mayankagarwal

Alternative way

SELECT * FROM
(
SELECT a.staff1 staff, MAX(b.name) NAME, MAX(b.surname) surname, COUNT(1) total FROM member a, staff b
WHERE a.staff1=b.id
GROUP BY a.staff1
UNION
SELECT a.staff2 staff, MAX(b.name) NAME, MAX(b.surname) surname, COUNT(1) total FROM member a, staff b
WHERE a.staff2=b.id
GROUP BY a.staff2
)

Open in new window

0
 

Author Comment

by:teera
Comment Utility
Hi sihar86
1248 - Every derived table must have its own alias
0
 
LVL 5

Expert Comment

by:mayankagarwal
Comment Utility
the query i have given is not working??
0
 

Author Comment

by:teera
Comment Utility
hi experts

Every member have staff to take care  member a was take care by staff1 and incase staff1 can not take care staff2 will take care the
   i want to see how many member that staff take care if it to much so will consider to look fore anoter staff to take cate

                     staff1   staff2
david               20       5
robert              19       6
Susan              18       4
0
 
LVL 5

Accepted Solution

by:
mayankagarwal earned 350 total points
Comment Utility
select a.id, a.name, a.surname, (select count(b.idmember) from member b where b.staff1 = a.id)  as count_staff1, (select count(c.idmember) from member c where c.staff2 = a.id)  as count_staff2 from staff a
0
 
LVL 19

Expert Comment

by:Bhavesh Shah
Comment Utility
Hi,

try this

- Bhavesh
SELECT A.idmember,A.Sname,
		Count(CASE WHEN A.staff1 = B.id THEN 1 ELSE 0 END) AS Staff1Count,
		Count(CASE WHEN A.staff2 = B.id THEN 1 ELSE 0 END) AS Staff2Count
FROM member A LEFT OUTER JOIN staff B
ON A.staff1 = B.id 
OR A.staff2 = B.id
Group By 
	A.idmember,A.Sname

Open in new window

0
 
LVL 2

Expert Comment

by:sihar86
Comment Utility
I forget the table name
for the result staff and amount of member
SELECT * FROM
(
SELECT a.staff1 staff, MAX(b.name) NAME, MAX(b.surname) surname, COUNT(1) total FROM member a, staff b
WHERE a.staff1=b.id
GROUP BY a.staff1
UNION
SELECT a.staff2 staff, MAX(b.name) NAME, MAX(b.surname) surname, COUNT(1) total FROM member a, staff b
WHERE a.staff2=b.id
GROUP BY a.staff2
)

Open in new window


for the result member and amount of staff1 and staff2
SELECT a.name, 
(SELECT COUNT(1) FROM tes b WHERE b.name=a.name AND staff1 <> '') staff1,
(SELECT COUNT(1) FROM tes c WHERE c.name=a.name AND staff2 <> '') staff2
FROM tes a
GROUP BY a.name

Open in new window

0
 
LVL 2

Assisted Solution

by:sihar86
sihar86 earned 150 total points
Comment Utility
Sorry, I correct my answer before
I forget the table name
for the result staff and amount of member
SELECT * FROM
(
SELECT a.staff1 staff, MAX(b.name) NAME, MAX(b.surname) surname, COUNT(1) total FROM member a, staff b
WHERE a.staff1=b.id
GROUP BY a.staff1
UNION
SELECT a.staff2 staff, MAX(b.name) NAME, MAX(b.surname) surname, COUNT(1) total FROM member a, staff b
WHERE a.staff2=b.id
GROUP BY a.staff2
) x 

Open in new window

for the result member and amount of staff1 and staff2
SELECT a.name, 
(SELECT COUNT(1) FROM tes b WHERE b.name=a.name AND staff1 <> '') staff1,
(SELECT COUNT(1) FROM tes c WHERE c.name=a.name AND staff2 <> '') staff2
FROM tes a
GROUP BY a.name

Open in new window

0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

PL/SQL can be a very powerful tool for working directly with database tables. Being able to loop will allow you to perform more complex operations, but can be a little tricky to write correctly. This article will provide examples of basic loops alon…
Occasionally there is a need to clean table columns, especially if you have inherited legacy data. There are obviously many ways to accomplish that, including elaborate UPDATE queries with anywhere from one to numerous REPLACE functions (even within…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now