php - Paginate while ignoring sub rows, with a Right Join -


i have basic query returns main row of program title(eventdesc) , lists program participants , info multiple sub rows.

program 1
email 1, email 2, name, status (first participant)
email 1, email 2, name, status (second participant)
program 2
email 1, email 2, name, status (first participant)

etc...

basic query:

$query_perpage = "select count(*) camps_events"; $result = mysql_query($query_perpage, $db) or die(mysql_error()); $r = mysql_fetch_row($result); $numrows = $r[0];   $pages = new paginator($query); $pages->items_total = $numrows; $pages->paginate(); $pages->mid_range = 7;   $query = mysql_query("select ce.eventcode, ce.eventdesc, ce.date, r.participant_fname, r.participant_lname,  r.position, r.dob, r.status, r.email_primary, r.order_number  camps_events ce  right join registrations r on r.eventcode = ce.eventcode  ce.reg_status = 'active'  , r.status not in ('incomplete','canceled')".getallowedprograms()."  order ce.eventdesc, ce.eventcode, r.participant_lname asc $pages->limit ") or die(mysql_error()); 

i've been trying figure out how paginate program, no matter how many subrows. have pagination class in place on page, pulls 1 table.

i've been trying implement same pagination, can pull first program, , limits page based on sub rows, not main program row. , in state i've posted here, each following page displays first programs. sub rows come different on each page, can't tell if in first program.

the query works fine pulling results properly, if it's huge list, it's extremely inefficient, , can timeout browser.

any appreciated, please let me know if can include else.

i'm not concerned using same pagination class, i'm open different approaches.

thanks in advance

try using subselect:

select ce.eventcode, ce.eventdesc, ce.date, r.participant_fname, r.participant_lname,      r.position, r.dob, r.status, r.email_primary, r.order_number  camps_events ce  right join registrations r on r.eventcode = ce.eventcode  ce.reg_status = 'active'      , r.status not in ('incomplete','canceled')".getallowedprograms()."      , ce.id in (select id camps_events pgce order ce.eventdesc, ce.eventcode $pages->limit) order ce.eventdesc, ce.eventcode, r.participant_lname asc ")  or die(mysql_error()); 

edit: unfortunately mysql can not yet limit subqueries. :-( has temp-table:

mysql_query("drop temporary table if exists tmp_events", $db); mysql_query("create temporary table tmp_events select id camps_events order eventdesc, eventcode " . $pages->limit, $db);  mysql_query("select ce.eventcode, ce.eventdesc, ce.date, r.participant_fname, r.participant_lname,      r.position, r.dob, r.status, r.email_primary, r.order_number  camps_events ce  inner join tmp_events pgce on pgce.id = ce.id right join registrations r on r.eventcode = ce.eventcode  ce.reg_status = 'active'      , r.status not in ('incomplete','canceled')".getallowedprograms()."  order ce.eventdesc, ce.eventcode, r.participant_lname asc ")  or die(mysql_error()); 

there can of course pages less paged items, because events without registrations not show.


Comments

Popular posts from this blog

java - Jmockit String final length method mocking Issue -

asp.net - Razor Page Hosted on IIS 6 Fails Every Morning -

c++ - wxwidget compiling on windows command prompt -