Есть таблица comments(id, object_type, object_id, comment),
Заполняется примерно так:
1|post|2|Lorem ipsum bla-bla-bla
2|article|567|Bla-bla-bla
3|goods|1255|asd asda sdad
4|post|4|asd asdasd
И есть таблица blogs(id, published, deleted, post_text),
Заполняется примерно так:
1|1|0|asd asdasdasd
2|1|1|asdas asdasdasd
3|0|0|asdas asdasdasdas
4|1|0|asdkasjdlas asldkajdl
Так вот задача. Мне нужно выбрать последние 10 комментов, при этом исключить из этого списка комменты, которые относятся к постам, у которых published = 0 и deleted = 1 (в примере в выборку должны попасть все комменты, кроме первого).
Попробовал сделать на PHP, но уж слишком громоздко и неповоротливо это получается. Начальник сказал сделать все это одним аЦким запросом.
Есть мысли на этот счет?
(Добавление)
А и еще, чуть не забыл, в итоге должно быть ровно 10 последних камментов.
(Добавление)
Кому интересно, запрос написал, вот как он выглядит:
CODE ( SQL):
скопировать код в буфер обмена
SELECT tt.* FROM ( SELECT * FROM bs_comments bc WHERE bc.object_type <> 'post' AND deleted = 0 UNION ALL SELECT bc.* FROM bs_comments bc RIGHT JOIN bs_blog bb ON bb.id = bc.object_id WHERE bc.object_type = 'post' AND bb.published = 1 AND bc.deleted = 0 AND bb.deleted = 0 ) AS tt ORDER BY tt.id DESC LIMIT 10;
|