-1

次のmysqlクエリがあります:

SELECT 
  u.ID,
  u.StudentCode,
  c.classname,
  s.STUDENTNAME,
  u.UserCode,
  g.ForeName AS MessageSentBy,
  u.Message,
  u.ForTchrSname AS MessageSentTo,
  DATE_FORMAT(u.datetime, '%d-%m-%y') AS datesent,
  u.RecordStatus 
FROM
  tblupdates u,
  tblguardian g,
  tblstudent s,
  tblclass c 
WHERE u.UserCode = g.GuardianCode 
  AND u.StudentCode = s.STUDENTCODE 
  AND (
    YEAR(u.DateTime) = '2013' 
    AND MONTH(u.DateTime) = '09'
  ) 
  AND u.RecordStatus = 'N' 
  AND c.classcode = s.classcode 
ORDER BY u.datetime DESC 

このクエリの結果を以下に示します。 ここに画像の説明を入力

2013 年と 09 月の tblupdates には、次の行があります。 ここに画像の説明を入力

上記の結果では、データを取得していますがid=138、すべてを表示したいです。他の行を表示しない理由は、(usercode-30000,admin)これらが ではtblteacherなく で発生するためですtblguardian。表示されますが、すべての行が表示されます。Tblteacher と tblupdates は、それぞれ teachercode と usercode で結合できます。usercodetblguardiantblteacherteachername

次のクエリを試しましたが、行が返されません:

SELECT 
  u.ID,
  u.StudentCode,
  c.classname,
  s.STUDENTNAME,
  u.UserCode,
  IF(
    u.usercode NOT IN (g.guardiancode),
    t.teachername,
    g.ForeName
  ) AS MessageSentBy,
  u.Message,
  u.ForTchrSname AS MessageSentTo,
  DATE_FORMAT(u.datetime, '%d-%m-%y') AS datesent,
  u.RecordStatus 
FROM
  tblupdates u,
  tblguardian g,
  tblstudent s,
  tblclass c,
  tblteacher t 
WHERE u.UserCode = g.GuardianCode 
  AND u.StudentCode = s.STUDENTCODE 
  AND t.teachercode = u.usercode 
  AND (
    YEAR(u.DateTime) = '2013' 
    AND MONTH(u.DateTime) = '09'
  ) 
  AND u.RecordStatus = 'N' 
  AND c.classcode = s.classcode 
ORDER BY u.datetime DESC 

私を助けてください

4

1 に答える 1