Помощь - Поиск - Пользователи - Календарь
Полная версия: Как Создать Запрос К Двум Таблицам
Форум Php-Nuke > Форумы разработчиков > Вопросы по MySQL
searcher-177
Всех с Новым Годом! smile.gif
Перечитал весь форум и мануал по Mysql, много повторил и закрепил. Но ни как не могу решить один запрос к базе.

Имеется две таблицы tab_1 и tab_2 с множеством полей в одной и второй. Для меня важны два поля в tab_1 и одно в tab_2

tab_1

id -- pole_1
1 -- - 0
2 -- - 0
3 -- - 0
4 -- - 0
5 -- - 0
6 -- - 1
7 -- - 1
8 -- - 2
9 -- - 3
10 -- 3
11 -- 3
12 -- 4

поле id это все разделы и подразделы
поле pole_1 разделы, которые включают подразделы из поля id
Например,
если pole_1 = '0' //, то это главный раздел (не включает подразделов)
если pole_1 = 'id' //,то подраздел входит в такой же раздел ( pole_1='3' означает, что подразделы (id)9,10,11 входят в раздел 3 или раздел 3 включае подразделы 9,10,11

tab_2 здесь важно поле элементов

proba_2
6
7
7
7
7
8
8

в примере получается элементов: раздела 1 подраздела 6 - один, раздела 1 подраздела 7 - четыре, элементов раздела 2 подраздела 8 - два,

а раздел 3 содержит пустые подразделы 9,10,11
раздел 4 содержат пустой подраздел 12
раздел 5 не содержит ни подразделов ни элементов

в поле proba_2 ,5
следующим кодом вывожу главные разделы, подразделы и количество элементов в подразделах
===========================

$sql = "SELECT * FROM ".$prefix."_tab_1 WHERE pole_1 = '0' ORDER BY title";// выбираю главные разделы и сортирую их по названию
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) {
echo "$row[title]";// вывожу название главных разделов

$sqlss = "SELECT * FROM ".$prefix."_tab_1 WHERE pole_1 = '$row[id]' ORDER BY title";// выбираю подразделы, привязываю их к разделам и сортирую по названию
$resultss = $db->sql_query($sqlss);
while ($rowss = $db->sql_fetchrow($resultss)) {
$num = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_pole_2 WHERE proba_2 like '%$rowss[id]%'"));//выбираю количество элементов для подразделов, которые входят в главные разделы
echo "$rowss[title] - $num";//вывод названий подразделов и количества элементов в них
}
}
===========================

Все это работает нормально.
А вот посчитать количество элементов в главных разделах ни как не могу.

$num = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_firms_firms WHERE firm_cat like '%$row[cat_id]%'"));// так одни нули
$num = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_firms_firms WHERE firm_cat = '$row[cat_id]'"));// так тоже одни нули
$num = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_firms_firms WHERE firm_cat like '%$rowss[cat_id]%' AND firm_cat like '%$rowss[sub_cat]%'"));// так тоже одни нули
===============

$sqlss = "SELECT * FROM ".$prefix."_firms_firms_cat WHERE cat_id = '$row[sub_cat]' ORDER BY cat_title";// такой запрос выдает только разделы без подразделов вообще

различными вариациями удается посчитать количество разделов в подразделах или же выводится количество всех элементов в каждый главный раздел вне зависимости от того есть там элементы или нет.

Прошу подсказать
1. как составить запрос
2. как вывести количество всех элементов для каждого главного раздела.
KrasivayaSvo
Цитата(searcher-177 @ 4.1.2008, 11:03) *

Прошу подсказать
1. как составить запрос
2. как вывести количество всех элементов для каждого главного раздела.

1) http://www.mysql.ru/docs/man/Group_by_functions.html
2) LIKE это конечно хорошо, но не всегда. Попробуйте прочитать про IN
searcher-177
Спасибо. Пошел разбираться по ссылке
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2014 Invision Power Services, Inc.