Hello sql guru's, I need help find SQL to solve a problem:
I have two tables, the first is persons:
person_id int unsigned not null auto_increment
firstname varchar(25)
lastname varchar(25)
The second is person_orgs
person_id int unsigned not null
org_id int unsigned not null
A person may be assigned more than one org by using person_orgs table, but
they can only be assigned to an org one time by way of application
rules/logic. Here is my problem:
I need to select a list of persons that have not ever been assigned to an
org OR have not been assigned to a specific org, such as org_id = 1, so I
tried:
select p.firstname,p.lastname from persons p left join person_orgs po on
p.person_id = po.person_id where (po.org_id <> 1 OR po.og_id IS NULL)
I thought this was correct, and it does return persons never assigned
before, but all it does concerning the specific org_id is to leave out the
one record where the person is assigned to org_id = 1. If the person is
assigned to org_id =1 plus any additional, then the record for the other
org(s) is/are returned, giving me a person I don't need.
I have no idea how to do this. It is almost as if I need to transform:
person_id org_id
1 1
1 2
1 3
into:
person_id org1 org2 org3
1 1 2 3
but I don't really know how in sql, and the number of orgs will be different
for each person. I know I could build some large associative array in my
language of choice and sort through it somehow, that just seems slow and
cumbersome.
I feel there is some SQL based solution, I just can't grasp it.
Can anyone else?
Thanks,
Brian
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php