Tôi có một DB trong đó bảng article
có mối quan hệ nhiều-nhiều với chính nó (thông qua article_rel
) và articles
có types
. Cha mẹ có một loại 1234, trong khi trẻ em có thể là một trong nhiều loại.Cách tốt hơn để truy vấn phụ
Tôi đang cố gắng tìm những bậc cha mẹ đó: hoặc không có con; hoặc, nếu họ có con, bài viết con gần đây nhất không phải là một tập hợp các loại nhất định.
Các công trình sau đây hợp lý cho phần thứ hai, nhưng không giải quyết phần đầu tiên. Mọi nỗ lực tôi đã thực hiện để rút truy vấn con để tôi có thể tham chiếu giá trị mà nó trả về (để thêm "hoặc là null") đã thất bại. Tôi cũng tự hỏi nói chung nếu có một cách tốt hơn để viết một cái gì đó như thế này.
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