| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > выборка по трем таблицам. |
| Автор: enoff 15.12.2010, 11:20 |
| Есть три таблицы: _____________ news_categories | ---------------------- id | title | order | ---------------------- по полю order(int) категории сортируются. _______________________________ news_feeds | -------------------------------------------------- id | category_id | title | feed_url | open | -------------------------------------------------- _________________________________ news | ---------------------------------------------------- id | feed_id | category_id | title | url | date | ---------------------------------------------------- Вот примерная структура таблиц. Плюс к этому нужго еще одно полу в таблице news - дата. Назовем пока `open_date`. Объясню дальше. Нужно выбрать пять новостей из каждой категории, у которых у feed'а open=1 и отсортировать их по дате. Если `open_date` не NULL и не менее текущей даты, то эта новость должна присутствовать в результате выборки. Категорий всего 50. Новостей - таблица каждый день пополняется на 10 000 записей. + в таблицах дополнительные текстовые поля. В цикле перебирать категории и делать запросы, кажется, не лучшее решение. Вариантов у меня 1: создать дополнительную таблицу `news_main`(`news_id`, `open_date`) где будут все требуемые новости. Записей постоянно будет 250. Перестраиваться таблица будет раз в 10 минут (периодичность подгружения новостей). Плюс изредка незначительные изменения при действиях в админке. На выборку затраты будут минимальны, на изменение тоже высокой нагрузки не будет. Каким путем лучше пойти? Интересует меня первый вариант. Как выбрать по пять новостей из каждой категории с этими условиями? (открыт ли фид, `open_date`, сортировка по `date`)? |
| Автор: enoff 15.12.2010, 13:35 |
| и новое условие. В таблице `news_feeds` поле `region`. Плюс в вышесказанному, нужно выбрать не по пять из категории, а по пять из одной категории для каждого региона. Вобщем, мне малореальным представляется это сделать без доп. таблицы, сделаю еще одну. Но за подсказки других вариантов, или как можно сделать без новой таблицы, буду рад |