У меня есть две таблицы tblteacher и tblattendance с общим полем tshortname. Теперь я хочу показать tshortname из tblteacher и статус как «да», если для конкретной даты в tblattendance у меня также есть tshortname в tblattendance, иначе статус не должен быть «нет»выборка данных из двух таблиц в mysql
select distinct(tblteacher.teachername),tblteacher.tshortname,
if(strcmp(tblteacher.tshortname,tblattendance.tshortname) and tblattendance.attdate='2013-07-01','no','yes') as status
from tblteacher,tblclass,tblattendance
здесь данные, которые показываются, когда я выполнить приведенный выше запрос
данные, приведенные на дату-'2013-07-01' является для некоторых учителей. Я не получаю, где проблема is.Please помочь мне решить эту проблему
Update:
select distinct(tblteacher.tshortname),if (tblteacher.tshortname not in(SELECT
distinct(t.tshortname) from tblteacher t left join tblattendance a on t.tshortname=a.tshortname
where a.attdate='2013-07-03'),'no','yes') as status from tblteacher;
Теперь я всегда получаю 42 строк и правильный статус в соответствии с датой в attenadance Таблица
Вы выбираете из 3 таблиц без присоединения к любым полям. Плохо. –
Я тоже пытался присоединиться, но рассмотрим случай, когда у вас есть запись в tblteacher, но не в tblattendance для конкретной даты, тогда она не покажет эту строку, но нам нужна эта строка со статусом no ... вы можете использовать join i будет реализовывать это, но решить мою проблему – rupinder18
Затем используйте левое соединение с любой функцией mssql, эквивалентной ifnull(). –