如何避免重复并在行已存在时选择一行?

时间:2015-04-19 18:56:58

标签: php mysql

我试图生成所有课程中所有课程的报告。我的问题是如果两个课程都有相同的课程,那么查询将带来两者。如果两个课程中的课程都只需要其中一个,我需要的是什么。

' curriculumcourses'表:在此表中是所有不同课程的课程。

enter image description here

问题发生在例如:

course_id=1
curriculum_id=1
set_numer=0 //this row is not related to the problem

course_id=1
curriculum_id=2
set_numer=0 //this row is not related to the problem

同样的课程_在不同的课程中是正确的,但是当我需要生成这个报告时,我不需要展示我只需要一个的课程。任何帮助将受到高度赞赏。

以下是我使用

的查询
$result2 ="SELECT 
  * 
FROM
  curriculumcourses NATURAL 
  JOIN courses 
WHERE semester_ava = '$avalablesemster' 
  AND curriculum_id IN 
  (SELECT 
    curriculum_id 
  FROM
    curriculum 
  WHERE '".$coursneededdate."'
   BETWEEN startdate  AND enddate ";
if(!empty($gradunder)){
 $result2 .=" AND grad_under = '".$gradunder."'";
}
 $result2 .=")";

2 个答案:

答案 0 :(得分:2)

使用GROUP BY

$result2 ="SELECT 
  * 
FROM
  curriculumcourses NATURAL 
  JOIN courses 
WHERE semester_ava = '$avalablesemster' 
  AND curriculum_id IN 
  (SELECT 
    curriculum_id 
  FROM
    curriculum 
  WHERE '".$coursneededdate."'
   BETWEEN startdate  AND enddate ";
if(!empty($gradunder)){
 $result2 .=" AND grad_under = '".$gradunder."'";
}
 $result2 .=") GROUP BY (course_id);";

答案 1 :(得分:0)

尝试使用不同的关键字。

EG。在COLUMN_NAME上选择DISTINCT * FROM ...........

COLUMN_NAME是包含课程的列。