я получил два SQL-таблицы:Получить категории и статьи с помощью одного запроса
- категории: идентификатор, название, уровень, родительскую
- статьи: идентификатор, название, category_id
сейчас Я хочу, чтобы получить этот результат:
Category 1
Article 1
Artcile 2
Article 3
Category 2
Subcategory 1
Article 1
Artcile 2
Article 3
Subcategory 2
Article 1
Artcile 2
Article 3
Category 3
Article 1
Artcile 2
Article 3
Я бы сделать это следующим образом:
$categories = $db->prepare('SELECT * FROM categories WHERE level = 0');
$categories->execute();
while($category = $categories->fetch(PDO::FETCH_OBJ)) {
$sub_categories = $db->prepare('SELECT * FROM categories WHERE parent = :parent_id');
$sub_categories->bindParam(':parent_id', $category->id, PDO::PARAM_INT);
$sub_categories->execute();
while($sub_category = $sub_categories->fetch(PDO::FETCH_OBJ)) {
$articles = $db->prepare('SELECT * FROM articles WHERE category_id = :category_id');
$articles->bindParam(':category_id', $sub_category->id, PDO::PARAM_INT);
$articles->execute();
while($article = $articles->fetch(PDO::FETCH_OBJ)) {
echo $article->title.'<br />';
}
}
}
Прежде всего, это довольно плохо, поскольку он просто получает статьи из подкатегорий (не для категорий), и есть только выбор уровня одного уровня.
Во-вторых: Я использую три запроса, которые выполняются несколько раз, только для этой основной вещи. Производительность ... :-(
Я хотел бы решить эту проблему с помощью только одного SQL-запрос Возможно ли это (Тогда я хотел бы создать выход ...)
SQLfiddle:.?http://sqlfiddle.com/#!2/2a4f2
Что выход вы хотите? –
@JayBlanchard Желаю славы и удачи! – Charles
Просто нужен результат, показанный выше. Это означает названия категорий и заголовков статьи ... – user3142695