0

我有一张这样的桌子:

[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 分配了模块

我想要一个查询加入两个表,其中输出如下所示:

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

我想删除额外的测试 1,因为这些显示在我正在使用 foreach 的视图上

你们能帮我解决这个问题吗?.. 我正在使用 codeIgniter,因此您也可以在 codeigniter 中向我提供查询。

谢谢

4

1 回答 1

0

MySQL 将在每一行中返回考试名称。为了防止它显示在您的视图中,您需要设置一些额外的逻辑 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 回答