在选择查询中具有特定的单词记录

时间:2015-10-05 09:51:47

标签: mysql

我有学生和费用表。我想加入这两个表

生:

student_id      dd_date
  20          2015-12-25

费用:

  fee_id     student_id     particulars             due_date

    1           20          Register fee           2015-10-25
    2           20          Late fee               2015-09-28
    3           20          Late Register fee      2015-12-26
    4           20          Application fee        2015-12-28

这里我不想显示dd_date>的记录due_date只有晚期单词记录。 我想要这样的输出

  student_id    fee_id     Particulars       dd_date       due_date

      20          1        Register fee      2015-12-25    2015-10-25
      20          2         Late fee         2015-12-25    2015-09-28
      20          3        Application fee   2015-12-25    2015-12-28

我写这样的查询

SELECT * 
FROM students S,Fees F 
WHERE F.student_id = S.student_id 
  AND F.particulars  LIKE  '%Late%' 
  AND S.dd_date >F.due_date

但它只显示那个特定日期和延迟费用。但我想要所有记录,但日期查询只执行“晚期”单词记录

任何人都可以提供帮助

3 个答案:

答案 0 :(得分:0)

嗯,如果我以正确的方式解释你的问题,那么你只需要删除AND F.particulars LIKE'%Late%'来自查询,因为这个标准确保只包含" Late"返回单词(井,字符串)。

但是,您的源表,期望和结果不匹配。

答案 1 :(得分:0)

您似乎希望将s.dd_date > f.due_date条件用于f.particular LIKE '%late%'的费用。试试这个来实现那个

SELECT * 
FROM students s, Fees f 
WHERE f.student_id = s.student_id 
  AND IF(f.particulars LIKE '%Late%', s.dd_date > f.due_date, 1=1)

答案 2 :(得分:0)

这是否符合您的要求

SELECT * 
FROM students S,Fees F 
WHERE F.student_id = S.student_id 
  AND NOT (F.particulars  LIKE  '%Late%' 
  AND S.dd_date < F.due_date)