Hey Tom,

Thanks for giving me a hand.
I think I solved the problem, a bit painful:

ok, i think i solved the problem...
if i want the chart layout to be like this on a page:

project | state_a | state_c | state_d | state_e
   1         -         -          Y        -
   2         -         Y          -        - 
   3         Y         -          -        - 


i should first:

1) run a select distinct state flag from table2 used by project to print out
the header

2) then select project_id, state from table3 in the order of the state_flag
pulled from the header... and
 
   for each row:
      if the project_id is different from the previous one,
         jump to the next project display row in the chart
      for each state (in 1)
         if the current project_states.state = state.. 
             print "Y"
         else print "-".

a little painful, but I can give room to keep track of all the project state
changes and add new states anytime without the need to add new column...

man.... 

thanks,
-ljb


-----Original Message-----
From: Tom Crimmins [mailto:[EMAIL PROTECTED] 
Sent: Thursday, February 10, 2005 6:15 PM
To: [EMAIL PROTECTED]
Cc: mysql@lists.mysql.com
Subject: RE: 1 to many query 


> -----Original Message-----
> From: Tom Crimmins
> Sent: Thursday, February 10, 2005 17:08
> To: livejavabean
> Cc: mysql@lists.mysql.com
> Subject: RE: 1 to many query 
> 
> 
> > -----Original Message-----
> > From: livejavabean
> > Sent: Thursday, February 10, 2005 16:47
> > To: mysql@lists.mysql.com
> > Subject: 1 to many query 
> > 
> > Hi there..
> > 
> >  
> > 
> > Hope you can give me some thoughts on this. let say we have 3 tables
> > 
> > 
> > 
> > table 1 (pk=project_id)
> > =======
> > - project_id 
> > - project_name 
> > 
> > table 2 (pk=project_id, project_state_flag)
> > =======
> > - project_id
> > - project_state_flag (fk to state_flag)
> > 
> > table 3 (pk=state_flag)
> > =======
> > - state_flag
> > - state_flag_name 
> > 
> > 
> > thank you.. but do u think it is possible to make the query return: 
> > 
> > - 1 row per project 
> > - each project state row's state become a column
> > e.g. 
> > 
> > project 1, name, state a, state b, state c... 
> > project 2, name, state a, state b, state c.
> > 
> > thanks in advance..
> 
> This looks like a many to many relationship to me. Each project is
> associated with multiple state_flags, and each state_flag can 
> be associated
> with multiple projects.
> 
> If you have mysql 4.1 or greater, you can use try the 
> following. It won't
> get you separate columns for each state_flag_name, but it 
> will give you a
> list of all the state_flag_names associated with each project 
> in a single
> column.
> 
> SELECT t1.project_id, t1.project_name, 
> GROUP_CONCAT(t3.state_flag_name) as
> state_flags FROM t1 INNER JOIN t2 ON (t1.project_id = 
> t2.project_id) INNER
> JOIN t3 ON (t2.project_state_flag = t3.state_flag) GROUP BY 
> t1.project_id

Sorry, also forgot to add that if you want projects returned that don't have
any state_flags associated with them you will need to make that first inner
join a left join.

> 
> > 
> > regards,
> > -ljb
> 
> ---
> Tom Crimmins
> Interface Specialist
> Pottawattamie County, Iowa
> 

---
Tom Crimmins
Interface Specialist
Pottawattamie County, Iowa

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to