Затронем немного тему со структурой вложенных запросов, в которой будут участвовать категории и материалы. Проводить урок будем посредством языка программирования PHP. Вложенные запросы - это запросы, которые относятся к основному запросу посредством связи таблиц по определенному полю. Допустим, для простого понятия в наших примерах, будем рассматривать категории, которые в свою очередь имеют соответствующие материалы. И так приступим.
В первую очередь давайте создадим базу данных и дадим ей название lessons. В базe данных lessons будут храниться две таблицы: с категориями - cat и с материалами - material. В категории cat будут 2 поля id и title. В категории material будут 3 поля id, title, cat.
Как Вы, может быть, уже догадались, что ключевое поле cat, которое будет объединять две таблицы в единую связку.
-- -- Table structure for table `cat` -- CREATE TABLE IF NOT EXISTS `cat` ( `id` int(2) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ; -- -- Dumping data for table `cat` -- INSERT INTO `cat` (`id`, `title`) VALUES (1, 'Категория 1'), (2, 'Категория 2'); -- -- Table structure for table `material` -- CREATE TABLE IF NOT EXISTS `material` ( `id` int(2) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `cat` int(2) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ; -- -- Dumping data for table `material` -- INSERT INTO `material` (`id`, `title`, `cat`) VALUES (1, 'Материал 1', 1), (2, 'Материал 2', 1), (3, 'Материал 3', 1), (4, 'Материал 4', 2);
Основная задача, продемонстрировать запросы, которые будут вложены и соединены по полю cat. И так начнем. Для начала подключимся к базе данных.
$db = mysql_connect ("localhost", "root", ""); mysql_select_db ("lessons", $db);
Первый пример. Данный запрос выводит сначала все поля из категории, затем выводит материалы по условию: где каждой категории принадлежат определенные материалы. Ключевое условие соединения таблиц cat=$res_one[id].
ID: 1
Категория: Категория 1
ID : 1
Материал: Материал 1
ID : 2
Материал: Материал 2
ID : 3
Материал: Материал 3
ID: 2
Категория: Категория 2
ID : 4
Материал: Материал 4
$sql_one = mysql_query("select id, title from cat"); $res_one = mysql_fetch_array($sql_one); do { echo"ID: $res_one[id]"; echo" Категория: $res_one[title]"; $sql_two = mysql_query("select id, title from material where cat=$res_one[id]"); $res_two = mysql_fetch_array($sql_two); do { echo"ID : $res_two[id]"; echo"Материал: $res_two[title]"; } while($res_two = mysql_fetch_array($sql_two)); } while($res_one = mysql_fetch_array($sql_one));
Второй пример. Данный запрос выводит все материалы и имеет внутренний запрос, который для каждого материала выбирает соответствующее название категории.
ID: 1
Материал: Материал 1
Категория название: Категория 1
ID: 2
Материал: Материал 2
Категория название: Категория 1
ID: 3
Материал: Материал 3
Категория название: Категория 1
ID: 4
Материал: Материал 4
Категория название: Категория 2
$sql_one = mysql_query("select material.id, material.title, (select cat.title from cat where cat.id=material.cat) as cat from material"); $res_one = mysql_fetch_array($sql_one); do { echo"ID: $res_one[id]"; echo"Материал: $res_one[title]"; echo"Категория название: $res_one[cat]"; } while($res_one = mysql_fetch_array($sql_one));
Третий пример. Данный запрос выбирает все категории и подсчитывает каждой категории вложенность материалов. Ключевое условие соединения cat=$res_one[id].
ID: 1
Категория: Категория 1 (В ней расположено: 1 материал(а))
ID: 2
Категория: Категория 2 (В ней расположено: 4 материал(а))
$sql_one = mysql_query("select id, title from cat"); $res_one = mysql_fetch_array($sql_one); do { $sql_two = mysql_query("select id, title from material where cat=$res_one[id]"); $res_two = mysql_fetch_array($sql_two); echo"ID: $res_one[id]"; echo"Категория: $res_one[title] (В ней расположено: $res_two[id] материал(а))"; } while($res_one = mysql_fetch_array($sql_one));
Мы получили три структуры вложенных запросов по категориям и материалам, выполненных посредством языка веб-программирования PHP, надеюсь они Вам пригодятся. Спасибо за внимание! Всем удачи!