I имеет структуру базы данных, как этогоMySQL запрос, чтобы получить заголовки из подкатегорий данного родителя
CATEGORIES
ID | parent_id | name
1 | 0 | sports
2 | 1 | football
3 | 1 | tennis
4 | 0 | activities
5 | 4 | hiking
etc.
NEWS
ID | category_id | title | date | etc
1 | 2 | Football is great | 2012-12-21 |
2 | 3 | Tennis is healthy | 2012-11-13 |
3 | 5 | Go on hiking | 2013-11-15 |
Теперь, когда я хочу, чтобы получить заголовки (наименования) подкатегорий «спорт», что лучший способ добиться этого?
Я думал о выполнении нескольких запросов (в этом случае 3).
Во-первых, получить все Чайлдс из «Спорт»
SELECT * FROM categories WHERE parent_id = 1
Тогда для каждого результата сделать запрос, чтобы получить заголовки из каждой подкатегории.
SELECT * FROM news WHERE category_id = (result from query above)
В этом примере будут выполнены 3 запроса. (Один для получения всех подкатегорий. В этом случае две подкатегории, поэтому в таблицу новостей будут выполняться два запроса, что составляет в целом 3.)
Или существует более умный (более эффективный) способ сделать это? Возможно, 1 запрос?
Вы можете легко присоединиться к этим две таблицы. Какова связь между КАТЕГОРИЯМИ и НОВОСТЬМИ, это 1: 1 или 1: n? Действительно ли иметь категории без новостей? –
Обратите внимание, что по соглашению мы используем NULL, а не 0 для сирот. – Strawberry