user
---------------------------
| ID | Name               |
---------------------------
| 1  | Jim Rice           |
| 2  | Wade Boggs         |
| 3  | Bill Buckner       |
---------------------------
at_bats
----------------------
| ID | User |  Bases |
----------------------
| 1  | 1    | 2      |
| 2  | 2    | 1      |
| 3  | 1    | 2      |
| 4  | 3    | 0      |
| 5  | 1    | 3      |
----------------------
What I want my query to do is get the count of the different base values in a join table like:
count_of_hits
---------------------
| ID | 1B | 2B | 3B |
---------------------
| 1  | 0  | 2  | 1  |
| 2  | 1  | 0  | 0  |
| 3  | 0  | 0  | 0  |
---------------------
I had a query where I was able to get the bases individually, but not them all unless I did some complicated Joins and I'd imagine there is a better way. This was the foundational query though:
SELECT id, COUNT(ab.*)
FROM user
LEFT OUTER JOIN (SELECT * FROM at_bats WHERE at_bats.bases=2) ab ON ab.user=user.id
 
     
     
     
    