2017-11-20 9 views
1

に参加し、セクションフィールドは「セクション」テーブルと「コース」の表に接合されています。今、私は「もちろん」と、すべての異なる「セクション」とグループを表示したい:PHP/MYSQLグループiがフィールド「セクション」と「クラス」という名前のテーブルを持っているテーブル

Course 1 
    -Section 1 
    -section 2 

Course 2 
    -section 3 
    -section 4 

は、ここに私のクエリコード

return $this->_db->select(" 
        SELECT DISTINCT 
         class.section, 
         section.id, 
         section.code, 
         section.name AS sectionname, 
         section.`year`, 
         section.minenrollee, 
         course.code, 
         course.name AS coursename 
        FROM 
         class 
         Inner Join section ON class.section = section.id 
         Inner Join course ON section.course = course.id 
        WHERE 
         class.period = '".$period."' 
        GROUP BY 
         section.course 
        ORDER BY 
         section.`year` ASC, 
         section.code ASC 
        "); 

これは私のPHPコードです。誰も私を助けることができます。ありがとうございます。

//GET DISTINCT SECTION IN CLASS 
     $sections = $this->model->getDistinctsections(Session::get('period')); 
     $list = array(); 
     foreach ($sections as $r) { 
      $list[$r->coursename][$r->id]['coursename'] = $r->coursename; 
     } 
     print_r($list); 
+0

何をグルーピングしていますか?あなたは集約のために何もしていません。 – Jacobm001

+0

私はそれをセクションで結合されたコース別にグループ化し、そのコースのすべてのセクションを表示します。 – Raymond

+0

'group by'句は集約のためのものです。あなたのPHPコードには表示されません。 – Jacobm001

答えて

1

データはそのまま正しく返されます。つまり、print_r()のようなステートメントは、グループ化されたデータを素敵な「グループ化」リストに戻すことはありません。それは仕事ではない。あなた自身でそれをしなければなりません。

必要な結果を得るには、データをループする必要があります。グループ化している列が前の行の列と同じ場合、その列を再度表に書き込む必要はありません。これはコーディングサービスではないので、サンプルデータセットを提供します。そこから作業することができます。

例データ:

Company | Department | Employee 
------------------------------- 
A  | Accounting | John 
A  | Accounting | Bill 
A  | Billing | Jane 
A  | Billing | Debra 

、テーブルにこのデータを印刷CompanyDepartmentにグループ化するために、我々は、データをループする必要があります。

ラフアルゴリズム:

  1. Companyがヌルであるか、または現在の行の値と一致しない場合は、次にCompany値を出力します。
  2. Departmentがヌルであるか、または現在の行の値と一致しない場合、次にDepartment値を出力します。これが最後のレコードでない場合
  3. かなり簡単のような表示にあなたを取得する必要があり、このアルゴリズムを以下の1.

に進み、Employee

  • の値を表示し

    Company | Department | Employee 
    ------------------------------- 
    A  | Accounting | John 
         |   | Bill 
         | Billing | Jane 
         |   | Debra 
    

    あなたの小さな適応はそれをよりきれいにすることができます。 :)

  • 関連する問題