igortik
Новичок
INNER JOIN
Есть таблицы:
category:
|cat_id|name|
|2 |Категория 1|
|3 |Категория 2|
sub_category:
|cat_id|mother_id|cat_name|
|1 |3 |Подкатегория 1|
|2 |3 |Подкатегория 2|
|3 |2 |Подкатегория 3|
Задача:
Вывести данные из базы на страницу в таком виде:
Категория 1
- Подкатегория 3
Категория 2
- Подкатегория 1
- Подкатегория 2
Я делаю:
Такое построение цикла нам не подходит, т.к. данные выйдут в виде:
Категория 1
- Подкатегория 3
Категория 2
- Подкатегория 1
Категория 2
- Подкатегория 2
Вопрос:
Как быть?
P.S. У меня есть решение с циклом в цикле (while), но оно будет ресурсоемким в сравнении с грамотной выдачей при наличии одного запроса к базе.
Прошу Вашего совета!
Есть таблицы:
category:
|cat_id|name|
|2 |Категория 1|
|3 |Категория 2|
sub_category:
|cat_id|mother_id|cat_name|
|1 |3 |Подкатегория 1|
|2 |3 |Подкатегория 2|
|3 |2 |Подкатегория 3|
Задача:
Вывести данные из базы на страницу в таком виде:
Категория 1
- Подкатегория 3
Категория 2
- Подкатегория 1
- Подкатегория 2
Я делаю:
PHP:
$query = "SELECT category.name, sub_category.cat_name FROM category INNER JOIN sub_category ON sub_category.mother_id = category.cat_id";
mysql_query("SET NAMES 'cp1251'");
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result))
{
$name = $row["name"];
$sub_name = $row["cat_name"];
printf("%s<br>-%s<br>",$name,$sub_name);
}
Категория 1
- Подкатегория 3
Категория 2
- Подкатегория 1
Категория 2
- Подкатегория 2
Вопрос:
Как быть?
P.S. У меня есть решение с циклом в цикле (while), но оно будет ресурсоемким в сравнении с грамотной выдачей при наличии одного запроса к базе.
Прошу Вашего совета!