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

Форум MySQL

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

 

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

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

тема: Объясните что это за запрос
 
 автор: prodigy   (20.03.2012 в 12:37)   письмо автору
 
 

Объясните как работает этот запрос:

$sql = 'SELECT node.*, (COUNT(parent.id) - 1) AS "depth"
        FROM tree AS node , tree AS parent
        WHERE node.left_key BETWEEN parent.left_key AND parent.right_key
        GROUP BY node.id
        ORDER BY node.left_key';


Если можно ссылку на тему где объясняются подобные запросы.
Спасибо.

  Ответить  
 
 автор: cheops   (20.03.2012 в 14:17)   письмо автору
 
   для: prodigy   (20.03.2012 в 12:37)
 

>FROM tree AS node , tree AS parent
Это так называемое самообъединение, т.е. двухтабличный запрос, где в качестве обоих таблиц выступает tree, просто одной таблице присваивается псевдоним node, а другой tree

>GROUP BY node.id
Данные группируются по поле node.id, т.е. в результате будет не декартово произведение, а то же количество полей, что в таблице node, правда уменьшенное при помощи WHERE-условия
>WHERE node.left_key BETWEEN parent.left_key AND parent.right_key

При этом поле depth, даст количество записей именно по декартовому произведению
>(COUNT(parent.id) - 1) AS "depth"

Следующая строка просто выводит все поля таблицы node
>node.*

Сортировка ведется по полю left_key
>ORDER BY node.left_ke

  Ответить  
 
 автор: prodigy   (20.03.2012 в 15:56)   письмо автору
 
   для: cheops   (20.03.2012 в 14:17)
 

если честно то я не понял вашу подсказку - декартово произведение что это значит?

========

я разобрался!
точнее мне немного помогли, но допер я сам))

сравнение каждой строки работает со всеми данными правой таблицы, где ID левой таблицы <= ID правой таблицы

просто я нигде не видел такого и смотрю на этот запрос как баран на новые ворота))

  Ответить  
Rambler's Top100
вверх

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