Я пытаюсь найти данные, которые могут отсутствовать в моей базе данных. У меня есть три таблицы, которые являются частью этого. Первая представляет собой таблицу событий, вторая представляет собой таблицу подэтапов, а третья представляет собой данные отдельных лиц из подэтапа для части подэтапов.
Я бы хотел сделать следующее:
Для каждого события найдите связанные с ним под-события, если для под-события задано поле tfile, а затем проигнорируйте его, если оно не просматривает данные отдельных лиц. Если в нем 0 совпадающих записей, выведите их в список.
Вот то, что я думаю, будет работать, но не правильно:
select event.*, subevent.* from event.id
join subevent on event.id = subevent.eid
join pdata on subevent.subid = pdata.subid
where subevent.textfile = ''
and Count(pdata.subid) = 0;
Редактировать: Добавлен код от пользователя, используются реальные имена таблиц:
SELECT tb_event.*, cr_event.*
FROM tb_event
INNER JOIN cr_event ON tb_event.id = cr_event.eid
INNER JOIN searchable_data ON cr_event.id = searchable_data.race_id
WHERE cr_event.tfile = ''
GROUP BY cr_event.id
HAVING Count(searchable_data.race_id) = 0
Дополнительная информация. Я полагаю, что проблема заключается в количестве элементов в searchable_data. Кажется, он не находит те, которые имеют ноль (я знаю, что они существуют).
в соответствии с предложением Ника я добавил столбцы в группу на
SELECT tb_event.*, cr_event.id
FROM tb_event
INNER JOIN cr_event ON tb_event.id = cr_event.eid
INNER JOIN searchable_data ON cr_event.id = searchable_data.race_id
WHERE cr_event.tfile = ''
GROUP BY tb_event.id, tb_event.ename, tb_event.ecity, tb_event.eplace, tb_event.elocation, tb_event.zip, tb_event.day, tb_event.year, tb_event.etime, tb_event.logo, tb_event.remail, tb_event.descr, tb_event.link, tb_event.reg, tb_event.rname, tb_event.created_by, cr_event.id
HAVING Count(searchable_data.race_id) = 0
Ссылка на таблицы
Я пытался около часа, чтобы этот запрос работал. У кого-нибудь есть другие идеи?