mysql - LIMIT in SQL query with left join -
i mam sql query me reads categories , want paged category have used sql query me statements:
public function fetchchildrennodess($start,$end){ $q_offset = (int)$start; $q_limit = (int)($end - $start); $query= "select k1.id id ".config::tablekategorie." k1 left join ".config::tablekategorie." k2 on k2.nlft<k1.nlft , k2.nrgt>k1.nrgt , k2.nlft>".$this->l." , k2.nrgt<".$this->r." k1.nlft>".$this->l." , k1.nrgt<".$this->r." , k2.id null order k1.nlft "; $i=0; $ret=array(); // $hash=$this->hash().'_part_'.$start.'_'.$end; $q=mysql_query($query."limit 0, 8 ",commercedb::$db); while($r=mysql_fetch_assoc($q)){ $ret[]=new kategoria($r['id']); }; return $ret; } if use limit here
$q=mysql_query($query."limit 0, 8 ",commercedb::$db); so listed 9 subsubcategory , go next subcategory. subcategory writes , 9 categories too. need listing include maximum 8 results. thank you
in solution, function should have 1 parameter, can increment (next) or decrement (prev). assume query , other codes work fine.
page parameter in sequence of 1-n. , not let user specify end value if goal limit recordset 8 rows.
public function fetchchildrennodess($page){ $range_const = 8; // # of rows show; constant value if( $page > 0 ) // if page 0 or less ??? $start = ($range_const * ($page-1)); // start limit else $start = 0; $end = $range_const - $start; // end limit $query= "select k1.id id ".config::tablekategorie." k1 left join ".config::tablekategorie." k2 on k2.nlft<k1.nlft , k2.nrgt>k1.nrgt , k2.nlft>".$this->l." , k2.nrgt<".$this->r." k1.nlft>".$this->l." , k1.nrgt<".$this->r." , k2.id null order k1.nlft "; $query = $query . ' limit ' . $start . ',' . $end . ';' $i=0; $ret=array(); $q = mysql_query($query,commercedb::$db); while($r=mysql_fetch_assoc($q)){ $ret[]=new kategoria($r['id']); } } test case
+----------+--------+------+ | page num | $start | $end | +----------+---------------+ | 1 | 0 | 8 | | 2 | 8 | 8 | | 3 | 16 | 8 | | 4 | 24 | 8 | | | | | | 0 | 0 | 8 | | -1 | 0 | 8 | +----------+--------+------+
Comments
Post a Comment