配列に表示したい3つの異なるテーブルからすべてのタイプのデータを取得するSQLクエリがあります。SQLクエリからすべてのデータを出力するようにできますが、テーブルの列の値が同じかどうかに基づいて、一度に配列の一部のみを表示したいです。以下にデモンストレーションを試みます。
私のSQL結果は次のようになります。
Client | Order | Exc1 | Exc2 | Rest | Reps |
-------------------------------------------------------
Steve | 1A | this | That | This | that |
-------------------------------------------------------
Mike | 1A | this | That | This | that |
-------------------------------------------------------
Jax | 1A | this | That | This | that |
-------------------------------------------------------
Steve | 1B | this | That | This | that |
-------------------------------------------------------
Mike | 1B | this | That | This | that |
-------------------------------------------------------
Jax | 1B | this | That | This | that |
配列でこれをページ1に出力したい
Steve | 1A | this | That | This | that |
-------------------------------------------------------
Mike | 1A | this | That | This | that |
-------------------------------------------------------
Jax | 1A | this | That | This | that |
そして、これは2ページ目などです。各ページには、すべてのクライアントのリストと、ページごとに 1 つの注文値のみが含まれます。ユーザーは注文フィールドに独自のテキストを入力できるため、注文列の値はユーザーごとに異なります。これは可能ですか?もしそうなら、どうすれば最善の方法ですか?
@Gordon Linoff ここに私の現在のクエリがあります。あなたが何を書いたか、またはそれが私の質問にどのように関連するかについて、私は本当に理解していません. 以下は私の現在のクエリです。配列への出力が完了していません。必要な結果が得られるまでテストしていたので、これを持っています。
function get_workout_class(){
$workout_class = array();
$workout_query = mysql_query("
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' AND `user_id` = ".$_session['user_id']."
ORDER BY `movements`.`order`, `clients`.`first_name`
");
}
これはクエリ結果のスクリーン ショットで、どのようにグループ化するかがわかります。異なる「順序」値で分割されるページ。クラスによってお客様の人数が異なります。
http://custommovement.com/help/query.png
これが私の新しいクエリです。最初の部分は問題なく動作しますが、サブクエリが問題を引き起こしています。結果を引き出していません。@ゴードンリノフ
function get_workout_class($class_id){
$class_id = (int)$class_id;
$workout_class = array();
$workout_query = mysql_query("
WITH `workouts` as (
SELECT
`movements`.`movement_id`,
`movements`.`order`,
`movements`.`mv_00`,
`movements`.`mv_01`,
`movements`.`mv_02`,
`movements`.`mv_03`,
`movements`.`mv_04`,
`movements`.`rep_set_sec`,
`movements`.`rest`,
`classes`.`class_name`,
`clients`.`client_id`,
`clients`.`first_name`,
`clients`.`last_name`,
`clients`.`nickname`
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'
)
SELECT `wo`.*
(SELECT COUNT(DISTINCT `order`) FROM `workouts` `wo2` WHERE `wo2`.`order` <= `wo`.`order`) as `pagenum`
FROM `workouts` `wo`
ORDER BY `pagenum`
");
echo mysql_num_rows($workout_query);
}