Hello.
What do you think about this:
SELECT u.name,
IFNULL(s.skill_name,'user doesn\'t have any
skill') AS SKILL,
(
SELECT COUNT(skill_id)
FROM user_skill us1
WHERE us1.skill_id = us.skill_id
) AS COUNT
FROM user u
LEFT JOIN user_skill us ON u.id = us.user_id
LEFT JOIN skill s ON us.skill_id = s.id
ORDER BY u.name;
+------+-----------------------------+-------+
| name | SKILL | COUNT |
+------+-----------------------------+-------+
| u1 | s1 | 2 |
| u1 | s3 | 1 |
| u2 | user doesn't have any skill | 0 |
| u3 | s1 | 2 |
| u3 | s2 | 1 |
+------+-----------------------------+-------+
Dean Karres <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I have three simple tables:
>
> user
> {
> id int PRIMARY
> name varchar UNIQUE
> }
>
> skill
> {
> id int PRIMARY
> skill_name varchar UNIQUE
> }
>
> user_skill
> {
> user_id int
> skill_id int
> UNIQUE KEY id (user_id, skill_id)
> }
>
> Each user can have zero or more associated skills. So you might have
> these associations:
>
> User_1: Skill_1, Skill_3
> User_2: <no listed skills>
> User_3: Skill_2, Skill_1
>
> Assuming that is all the users and skills, I would like to produce a
> report that lists each user and then the list of skills each has (if
> any). Along with each skill I want to print the count of how many times
> this skill has been mapped to a user. Using the info above then
> something like:
>
> User_1
> Skill_1 (2)
> Skill_3 (1)
> User_2
> User_3
> Skill_1 (2)
> Skill_2 (1)
>
> The skill "usage counts" are in parens. I get that there will prolly be
> a join in order to pick up the fact that User_2 has no listed skills.
> What I'm not sure about is how to get the over all skill counts. Do I
> need to do the query that returns the user and skill list then go
> through the per user skills and do additional queries to get the skill
> counts?
>
> help?
>
> Dean...K...
>
>
--
For technical support contracts, goto https://order.mysql.com/?ref=ensita
This email is sponsored by Ensita.NET http://www.ensita.net/
__ ___ ___ ____ __
/ |/ /_ __/ __/ __ \/ / Gleb Paharenko
/ /|_/ / // /\ \/ /_/ / /__ [EMAIL PROTECTED]
/_/ /_/\_, /___/\___\_\___/ MySQL AB / Ensita.NET
<___/ www.mysql.com
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]