0

次のようなテーブルが 1 つあります。

[Exam]
[exam_id] [exam_name]
   1        Test1
   2        Test2

そして、このような他のテーブル:

[Module]
[module_id] [module_name] [exam_id]
    1          Module1      1
    2          Module2      1
    3          Module1      2

明らかに、Test1 には 2 つのモジュールが割り当てられ、Test2 には 1 つのモジュールが割り当てられていることがわかります。

出力が次のようなものになる両方のテーブルを結合するクエリを取得したい:

Test 1    Module1
          Module2

Test 2    Module1

私は次のことをしました:

SELECT `exam`.'exam_id', 'exam_name', 'module_name'
FROM (`exam`) JOIN `module` ON `exam`.`exam_id`=`module`.`exam_id`

しかし、重複した試験名を含む出力が得られました:

Test 1 Module 1
Test 1 Module 1

Test 2 Module1

これらは foreach を使用しているビューに表示されているため、余分な Test 1 を削除したい

これで私を助けてもらえますか?..私はcodeIgniterを使用しているので、codeigniterでもクエリを提供できます。

ありがとうございました

4

1 に答える 1

0

MySQL はすべての行で Exam_name を返します。ビューに表示されないようにするには、追加のロジック PHP 側を設定する必要があります。例えば

$exam = null;

foreach($rows as $row){

    if($row['exam'] !== $exam){
        echo '<h1>'. $row['exam'] .'</h1>';
        $exam = $row['exam'];
    }

    echo '<p>'. $row['module'] .'</p>';

}

これは、前の行と異なる場合にのみ検査を印刷します。

于 2013-03-20T22:39:04.413 に答える