Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Двойные запросы в MySQL
 
 автор: Night_Charter   (11.03.2007 в 00:50)   письмо автору
 
 

Добрый день.
Вот все хочу узнать про двойные запросы в Mysql.
Для чего их исползуют, увеличивает ли это производительность муськи, ну и вообще хоть маленький пример с небольшим описанием.
Заранее благодарен и надеюсь на Вашу помощь)

   
 
 автор: cheops   (11.03.2007 в 01:00)   письмо автору
 
   для: Night_Charter   (11.03.2007 в 00:50)
 

Хм... а под двойными запросами что имеется в виду? Двухтабличные, вложенные, UNION-запросы?

   
 
 автор: Night_Charter   (11.03.2007 в 12:14)   письмо автору
 
   для: cheops   (11.03.2007 в 01:00)
 

Да, двухтабличные )

   
 
 автор: cheops   (11.03.2007 в 13:28)   письмо автору
 
   для: Night_Charter   (11.03.2007 в 12:14)
 

Такие запросы используются когда для формирования результирующего запроса требуются данные из обеих таблиц. Производительность от этого, как правило, не возрастает, а наоборот падает, однако результат можно получить за счёт меньшего объёма кода. Пусть имеется две таблицы, первая catalogs, которая хранит названия каталогов
CREATE TABLE catalogs (
  id_catalog INT(11) NOT NULL,
  name TINYTEXT NOT NULL
  PRIMARY KEY (id)
);

Вторая products, в которой содержаться товарные позиции, каталогов
CREATE TABLE products (
  id_product int(11) NOT NULL auto_increment,
  name tinytext NOT NULL,
  id_catalog int(11) NOT NULL,
  PRIMARY KEY  (id_product),
  KEY id_catalog (id_catalog)
);

Таблицы связаны при помощи поля id_catalog, записи таблицы products в этом поле хранят первичные ключи таблицы catalogs. Если просто выбирать записи из таблицы products, то в поле id_catalog будет лишь номер, чтобы в него сразу помещалось название каталога, следует использовать много табличный запрос
SELECT products.id_product AS id_product, products.name AS name, catalogs.name AS catalog
FROM catalogs, products 
WHERE catalogs.id_catalog = products.id_catalog

   
 
 автор: Night_Charter   (11.03.2007 в 13:41)   письмо автору
 
   для: cheops   (11.03.2007 в 13:28)
 

Спасибо cheops.
Этот вариант гораздо легче, чем построение двух отдельных запросов для получения всего лишь названия каталога.
У меня созрел вопрос номер два.
Где можно почитать инфу или Вы снова приведете пример неограниченно вложенности категорий. Я гдето слыхал, что можно все реализовать одним запросом.
Я так понимаю, что необходимо использовать рекурсивный запрос.

   
 
 автор: cheops   (11.03.2007 в 14:38)   письмо автору
 
   для: Night_Charter   (11.03.2007 в 13:41)
 

Для создания неограниченной вложенности следует организовать таблицу catalogs немного по другому (да, там зачастую используется рекурсия). Подробнее можно почитать в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=701.

PS Под новые вопросы лучше заводить новые темы.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования