Помогите составить запрос
adv_parent (key parent_id) - главное меню (напр., "Телефония", "Комп. техника", ... )
adv_section (key section_id, parent_id) - подменю каждого пункта главного меню
sell (key id, section_id) - таблица с объявлениями
Необходимо, чтобы результат содержал перечнь пунктов главного меню и количество объявлений в каждом из них.
Например так:
Телефония (35)
Комп. техника (23)
...
Всем заранее спасибо.
Есть 3 таблицы
adv_parent (key parent_id) - главное меню (напр., "Телефония", "Комп. техника", ... )
adv_section (key section_id, parent_id) - подменю каждого пункта главного меню
sell (key id, section_id) - таблица с объявлениями
Необходимо, чтобы результат содержал перечнь пунктов главного меню и количество объявлений в каждом из них.
Например так:
Телефония (35)
Комп. техника (23)
...
Всем заранее спасибо.
используй mysql_num_rows .....
используй mysql_num_rows .....
Это садизм с особым цинизмом. :D
COUNT(столбец) as name
Это садизм с особым цинизмом. :D
COUNT(столбец) as name
Синтаксические конструкции SQL я и сам вроде как знаю. Я так и делал, как ты говоришь. Вот только не получается...
Люди если можете составте плз мне этот запрос. А то я иссяк.
Вариант 1: SELECT COUNT(key) as co_key FROM adv_parent
Вариант 2 вытягиваешь результат и $result = mysql_num_rows($result)
Вариант 3: num_row = count($result) (это если результат в массив загонять.
Выбирай:).
Есть 3 таблицы
adv_parent (key parent_id) - главное меню (напр., "Телефония", "Комп. техника", ... )
adv_section (key section_id, parent_id) - подменю каждого пункта главного меню
sell (key id, section_id) - таблица с объявлениями
Необходимо, чтобы результат содержал перечнь пунктов главного меню и количество объявлений в каждом из них.
Например так:
Телефония (35)
Комп. техника (23)
...
Всем заранее спасибо.
А какая вложенность подменю? Если более двух уровней - то наверное лучший выбор это рекурсии. Главное понять смысм рекурсий - а посчитать сам уже сможешь с помощью функции mysql_num_rows.
P.S. Здесь на codenet.ru где-то была статья про рекурсии. Поищи поиском.
Синтаксические конструкции SQL я и сам вроде как знаю. Я так и делал, как ты говоришь. Вот только не получается...
А я еще не сказал как ... :D
GROUP BY ты тоже знаешь? или подзабыл :D
А я еще не сказал как ... :D
GROUP BY ты тоже знаешь? или подзабыл :D
По всей видимости вопрос недопонят.
Дело в том, что таблица с объявлениями (sell) связана с таблицей, содержащей пункты главного меню (adv_parent), через таблицу подпунктов (adv_section).
Я пробовал так:
SELECT adv_parent.*, COUNT(*)
FROM adv_parent, adv_section, sell
WHERE adv_parent.parent_id = adv_section.parent_id
AND adv_section.section_id = sell.section_id
GROUP BY sell.id
Выдает только строку с первым пунктом главного меню. Я их там 7 штук...
А я еще не сказал как ... :D
GROUP BY ты тоже знаешь? или подзабыл :D
По всей видимости вопрос недопонят.
Дело в том, что таблица с объявлениями (sell) связана с таблицей, содержащей пункты главного меню (adv_parent), через таблицу подпунктов (adv_section).
Я пробовал так:
SELECT adv_parent.*, COUNT(*)
FROM adv_parent, adv_section, sell
WHERE adv_parent.parent_id = adv_section.parent_id
AND adv_section.section_id = sell.section_id
GROUP BY sell.id
Выдает только строку с первым пунктом главного меню. Я их там 7 штук...
while($print_top = mysql_fetch_array($top_menu)){
$top = $print[top];
echo $top."
\n\r";
$next_menu = mysql_query("SELECT name FROM next_menu WHERE id_top_menu = '$top'");
while($next = mysql_fetch_array($next_menu)) {
echo " ".$next[name]."
\n\r";
}
}
ну короче что-то типа этого (могут быть где-то ошибки, так-как писАл сюда сразу).
Тут уже подсчитать просто:)
По всей видимости вопрос недопонят.
Дело в том, что таблица с объявлениями (sell) связана с таблицей, содержащей пункты главного меню (adv_parent), через таблицу подпунктов (adv_section).
Я пробовал так:
SELECT adv_parent.*, COUNT(*)
FROM adv_parent, adv_section, sell
WHERE adv_parent.parent_id = adv_section.parent_id
AND adv_section.section_id = sell.section_id
GROUP BY sell.id
Выдает только строку с первым пунктом главного меню. Я их там 7 штук...
Ты конечно извени, но такой дурной структуры таблиц я ещё не видел! Как построишь базу - такой проэкт и будет.
Как бы я сделал
Создал таблицы:
categories
(
cid,
parent,
name
)
banners
(
bid,
...
cid
)
При такой структуре ты можешь создавать какую-хочешь структуру категорий.
вывод главного меню (у него parent=0)
$query = "SELECT * FROM categories ORDER BY cid";
загоняешь всё в массив, например $categories
$query = "SELECT cid,COUNT(cid) as coun FROM banners";
загоняешь всё в массив, например $banners
потом
$lastParent = 0;
$parAndChil = array();
function getChildren($parent_id)
{
global $categories,$lastParent;
for($i=0;$i<count($categories);$i++)
{
if($categories[$i]['parent']==$parent_id)
{
$parAndChild[$lastParent][]=$categories['cid'];
getChildren($categories['cid']);
}
}
}
for($i=0;$i<count($categories);$i++)
{
if($categories[$i]['parent']!==0)
break;
$lastParent = $categories[$i]['cid'];
getChildren($categories[$i]['cid']);
}
Всё, у тебя есть массив, в котором отсортированы родители и все их подкатегории. Теперь создаёшь функцию которая суммирует все объявления.
Я это не тестил, но вроде должно работать. Но если будут баги - на меня не кричать, тем более, что у меня температура)
Ты конечно извени ... но вроде должно работать. Но если будут баги - на меня не кричать, тем более, что у меня температура)
Спасибо. Вроде как понял... Надо будет попробовать.
А насчет дурной структуры, так для вложенности в 1 уровень вполне сгодится. Но критика вполне справедлива :).