0

3つのテーブルを結合し、ページ番号でソートされた結果を返すクエリがあるので、一度に1つのページと、その出力を配列で表示できます。

これが私の質問です

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

ここで、MAX(pagenum)を取得できるようにしたいので、クエリの最後に到達したときにPHPに通知できます。このようなことをする方法はありますか(私は試しましたが、SQL構文エラーが発生し続けます)

SELECT MAX(`pagenum`) as `lastpage`

それとも、これを達成するためのより良い方法はありますか?

以下は、このクエリの結果のスクリーンショットです。現在、クエリの最後(これらの結果の5ページ)に到達したときにユーザーをページからページに移動する「次へ」と「前へ」のリンクがあります。PHPに次のページに移動するオプションを与えないようにしたいです。したがって、どういうわけか、各クエリのMAX(pagenum)の値を取得する必要があります。

http://custommovement.com/help/woquery.png

4

1 に答える 1

1

別の相関サブクエリを含めることで、maxpagenumを取得できます。

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 
于 2012-08-14T20:20:54.800 に答える