Re: OT mysql pivot table problem

From: Date: Thu, 25 Jun 2009 20:17:19 +0000
Subject: Re: OT mysql pivot table problem
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-294611@lists.php.net to get a copy of this message
You'd be much, much better off creating a query by concatenating ", ($uid, $groups[$i])" into one huge insert query. YOU SHOULD NEVER, EVER EVER EVER EVER RUN QUERIES IN A LOOP! On Thu, Jun 25, 2009 at 4:11 PM, Matt Giddings<mcgiddin@svsu.edu> wrote: > Thanks for taking the time to provide an example.  I'm going to take the > advice given by you and others and simply do this in php instead of looking > for a fancy mysql solution.  ; )  Dang, and I was really wanting to wow > myself today... > Thanks again! > Matt > > On Thu, Jun 25, 2009 at 3:51 PM, Ashley Sheridan > <ash@ashleysheridan.co.uk>wrote: > >> On Thu, 2009-06-25 at 15:20 -0400, Matt Giddings wrote: >> > I know this is the off topic (sorry), but it is a php project that I'm >> > working on!  I need some pointers on how to pivot a mysql column >> (containing >> > comma delimited data) into an equal number of rows (see example).  Any >> > direction (pointers to links, etc. would be appreciated). >> > >> > From this: >> > >> > user.table >> > uid|name|groups >> > 1|mcgiddin|1,4,7,10,12 >> > >> > >> > To this: >> > >> > pivot.table >> > uid|group >> > 1|1 >> > 1|4 >> > 1|7 >> > 1|10 >> > 1|12 >> >> I don't know of any fancy ways of doing it just in MySQL, but if the >> records are all as simple as that, something like this should do the >> trick: >> >> $query = "SELECT * FROM user"; >> $result = mysql_query($query); >> while($row = mysql_fetch_array($result)) >> { >>    $uid = $row['uid']; >>    $groups = explode(','$row['groups']); >>    for($i=0; $i<count($groups); $i++) >>    { >>        $query2 = "INSERT INTO pivot VALUES($uid, >> $groups[$i])"; >>        $result2 = mysql_query($query2); >>    } >> } >> >> Also, I'd recommend having some sort of auto increment value on that >> pivot table, so you can manipulate specific rows at a later date. >> >> Thanks >> Ash >> www.ashleysheridan.co.uk >> >> > > > -- > Matt Giddings > Web Programmer > Information Technology Services > Saginaw Valley State University > Phone: 989.964.7247 > > http://www.svsu.edu >

« previous php.general (#294611) next »