У меня есть БД, в которой таблица article
имеет отношение многие -к -многие к себе (черезarticle_rel
)и articles
имеют types
. Родители имеют тип 1234, а дети могут быть одного из нескольких типов.
Я пытаюсь найти тех родителей, у которых либо :нет детей; или, если у них есть дети, самая последняя дочерняя статья не относится к определенному набору типов.
Следующее работает достаточно хорошо для второй части, но не касается первой части. Все мои попытки извлечь подзапрос, чтобы я мог сослаться на возвращаемое им значение (, чтобы добавить «или равно нулю» ), не увенчались успехом. Мне также интересно, есть ли лучший способ написать что-то подобное.
SELECT
CONCAT('http://www.sitename.com/', n.id, '.html') as URL,
n.added,
u.email,
n.body
#c.body
FROM
warehouse.article n
inner join site.user u on n.user_id = u.id
inner join warehouse.article_param np on np.id = n.id and np.param_name = 'ready' and np.param_value = 'true'
where
n.type_id = 1234
and
(select
c.type_id
from
warehouse.article c,
warehouse.article_rel r
where
r.child_nid = c.id
and r.parent_nid = n.id
order by
c.added desc
limit 1)
not in (2245,5443)
order by
n.updated desc