У меня есть следующие 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
Результат этого запроса показан ниже:
сейчас в моей tblupdates за год-2013 и месяц- 09 у меня есть следующие строки:
Теперь в моем выше результате я получаю данные для id=138
, но я хочу, чтобы отобразить all.The причины п ВЗ отображения других строк, что (usercode-30000,admin)
они происходят в tblteacher
, а не tblguardian
.so теперь я хочу, что если usercode
от tblguardian
он показывает опекун имени, но если из tblteacher
он показывает teachername
, но показывает все rows.Tblteacher и tblupdates могут быть к которым присоединяются код учителя и пользовательский код соответственно.
Я пробовал следующий запрос, но он оленья кожа вернуть любую строку:
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
Пожалуйста, помогите мне
Внешнее соединение должно сделать трюк, в mysql, слева, присоединиться к –