使用连接过滤SQL中的记录

时间:2015-03-09 14:10:31

标签: sql mariadb

我正在创建一个应用程序,为大学里的希腊生活事件制作客人名单。

  • 我正在与之合作的两张桌子是“学生”#39;表和参与者'表
  • 学生表中的字段为:student_id,student_name,university和chapter。
  • 具有章节ID的学生被视为成员,没有章节ID的学生在制作访客列表(参与者表)时被视为访客。
  • 参与者表字段为:participant_id,成员(与student_id相关),guest(与student_id相关)和事件。 在尝试将guest虚拟机添加到某个事件的guest列表时,我编写了以下sql查询来过滤掉来自不同大学的学生,这些学生不在章节中,并且已经不在列表中:

      $student = getColumn("SELECT guest FROM participant WHERE event =     '$event'");
      $university = getSqlValue("SELECT university FROM student WHERE student_id = '$member'");
    
        $f->setOption('filter', 
        "SELECT student_name
        FROM  `student` 
        LEFT JOIN participant ON student.student_id = participant.guest
        WHERE student.chapter =  ''
        AND student.university =  '$university'
        AND participant.guest != '$student'");
    

所以,我知道这不会起作用,因为我为$ student提供了一个完整的数组,但即使我尝试使用一个学生ID,查询也无法正常工作。它返回空。如果我删除最后一个AND particpant.guest!= $ student,那么查询将返回大学中不是章节成员的所有学生。

我的问题分为两部分:

  1. 为什么该查询不能为学生使用一个值?
  2. 有人可以想出更好的方法吗?

0 个答案:

没有答案