Reputation: 371
I have a query that joins 3 tables and returns the results sorted by page number so I can view only one page at a time and its output through an array.
Here is my query
select wo.*,
(select count(distinct order)
from (SELECT *
FROM `movements` LEFT JOIN
`classes`
ON `movements`.`class_id` = `classes`.`class_id` LEFT JOIN
`clients`
ON `movements`.`class_id` = `clients`.`class_id`
WHERE `classes`.`class_id` = '$class_id'
) wo2
where wo2.order <= wo.order
) as pagenum
from (SELECT *
FROM `movements` LEFT JOIN
`classes`
ON `movements`.`class_id` = `classes`.`class_id` LEFT JOIN
`clients`
ON `movements`.`class_id` = `clients`.`class_id`
WHERE `classes`.`class_id` = '$class_id'
) wo
order by pagenum
Now I want to be able to get the MAX(pagenum) so I can tell PHP when I have reached the end of the query. Is there a way to do something like this (I have tried but keep getting sql syntax errors)
SELECT MAX(`pagenum`) as `lastpage`
Or is there a better way to accomplish this?
Below is a screenshot of the results of this query. I currently have "next" and "previous" link that take the user from page to page when I reach the end of the query (page 5 in these results) I want to have PHP no longer give the option to go to next page. So I somehow have to get the value of the MAX(pagenum) of each query.
http://custommovement.com/help/woquery.png
Upvotes: 0
Views: 166
Reputation: 1269933
You can get the maxpage num by including another correlated subquery:
select wo.*,
(select count(distinct order)
from (SELECT *
FROM `movements` LEFT JOIN
`classes`
ON `movements`.`class_id` = `classes`.`class_id` LEFT JOIN
`clients`
ON `movements`.`class_id` = `clients`.`class_id`
WHERE `classes`.`class_id` = '$class_id'
) wo2
where wo2.order <= wo.order
) as pagenum,
(select count(distinct order)
from (SELECT *
FROM `movements` LEFT JOIN
`classes`
ON `movements`.`class_id` = `classes`.`class_id` LEFT JOIN
`clients`
ON `movements`.`class_id` = `clients`.`class_id`
WHERE `classes`.`class_id` = '$class_id'
) wo2
) as maxpages
from (SELECT *
FROM `movements` LEFT JOIN
`classes`
ON `movements`.`class_id` = `classes`.`class_id` LEFT JOIN
`clients`
ON `movements`.`class_id` = `clients`.`class_id`
WHERE `classes`.`class_id` = '$class_id'
) wo
order by pagenum
Upvotes: 1