Note that there are some explanatory texts on larger screens.

plurals
  1. POOptimizing MySQL/PHP queries
    primarykey
    data
    text
    <p>My database looks something like this:</p> <pre><code>[foods] foods_id, foods_name, groups_id, producers_id [producers] producers_id, producers_name [groups] groups_id, groups_name </code></pre> <p>PHP:</p> <pre class="lang-php prettyprint-override"><code>&lt;?php $producers = mysql_query('SELECT p.producers_name,p.producers_id FROM foods as f,producers as p WHERE p.producers_id = f.producers_id AND f.groups_id = 1 GROUP BY p.producers_name'); //list the producer... while($row = mysql_fetch_array($producers, MYSQL_ASSOC)){ $foods = mysql_query('SELECT foods_id, foods_name FROM foods WHERE producers_id = '.$row['producers_id'].' ORDER BY foods_name ASC'); while($row2 = mysql_fetch_array($foods, MYSQL_ASSOC)){ //list the foods under this producer... } } ?&gt; </code></pre> <p>GOAL:</p> <pre><code>PRODUCER A FOOD A FOOD B FOOD C PRODUCER B FOOD D FOOD E PRODUCER C FOOD F ... </code></pre> <p>SOLUTION: </p> <pre><code>&lt;?php $res = mysql_query('SELECT f.foods_id, f.foods_name, p.producers_id, p.producers_name FROM foods f, producers p WHERE p.producers_id = f.producers_id AND f.groups_id = '.$_GET['g'].' ORDER BY p.producers_name ASC, f.foods_name ASC'); $xproducers = array(); while($row = mysql_fetch_array($res , MYSQL_ASSOC)){ if(!array_key_exists($row['producers_id'],$xproducers)){ $xproducers[$row['producers_id']] = array('id'=&gt;$row['producers_id'],'name'=&gt;$row['producers_name'],'foods'=&gt;array()); } array_push($xproducers[$row['producers_id']]['foods'],array('id'=&gt;$row['foods_id'],'name'=&gt;$row['foods_name'])); } ?&gt; </code></pre> <p>This solution is fast enough for me, maybe its not perfect but it does the job fine :) I thank you all for your awesome help!</p> <p>Cheers</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload