ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 07.02.2009, 20:23
Аватар для VDShark
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Для 2-х уровней Хелиос написал адекватный запрос (в отличии от большинства написанного в этом топике). Если же необходимо большее количество уровней (зачастую неопределенное) впринципе можно использовать хп, но понадобится минимум 2 курсора. Преимуществ здесь будет 2:
1) Сразу возвращаем полный и нужный нам результат
2) Сохраняется план выполнения данных запросов на серваке, что, при правильном подходе,
увеличит скорость работы.
 
Ответить с цитированием

  #12  
Старый 07.02.2009, 20:36
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

Helios
спасибо, как раз то, что нужно.
я не знал что в in() можно передавать запрос.

VDShark
что такое хп и курсоры?
 
Ответить с цитированием

  #13  
Старый 07.02.2009, 20:41
Аватар для AkyHa_MaTaTa
AkyHa_MaTaTa
Постоянный
Регистрация: 19.03.2007
Сообщений: 684
Провел на форуме:
3152874

Репутация: 1020


Отправить сообщение для AkyHa_MaTaTa с помощью ICQ
По умолчанию

Цитата:
Сообщение от Helios  

Код:
SELECT *
FROM `comments`
WHERE `parent_id` = NULL
OR `parent_id` IN (
    SELECT `id` FROM `comments` WHERE `parent_id` =NULL)
Я не вижу смысла выполнения этого запроса, критерии по которым выбераються данные при главном запросе идентичны тем которые идут в подзапросе, в итоге мы получаем тот же результат что и в основном запросе просто лишний раз проходим по таблице.
 
Ответить с цитированием

  #14  
Старый 07.02.2009, 20:51
Аватар для VDShark
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Цитата:
Сообщение от AkyHa_MaTaTa  
Я не вижу смысла выполнения этого запроса, критерии по которым выбераються данные при главном запросе идентичны тем которые идут в подзапросе, в итоге мы получаем тот же результат что и в основном запросе просто лишний раз проходим по таблице.
А если подумать немного? Выполни такие запросы и посмотри результат, м.б. натолкнет на ответ.

> что такое хп и курсоры?
ХП - сокращение от Хранимые Процедуры. Т.е. код хранящийся на стороне сервера и вызываемый по имени. А курсоры - это, грубо говоря, аналог циклов трационных языков программирования (другими словами - способ перемещения по кортежам и работы с ними, указатель на полученное отношение). Ну это я попытался рассказать попонятнее... Но можешь прочитать об этом в той же википедии (хоть там и не особо расписано) - http://ru.wikipedia.org/wiki/Курсор_(базы_данных)
 
Ответить с цитированием

  #15  
Старый 07.02.2009, 20:54
Аватар для AkyHa_MaTaTa
AkyHa_MaTaTa
Постоянный
Регистрация: 19.03.2007
Сообщений: 684
Провел на форуме:
3152874

Репутация: 1020


Отправить сообщение для AkyHa_MaTaTa с помощью ICQ
По умолчанию

Цитата:
Сообщение от VDShark  
А если подумать немного? Выполни такие запросы и посмотри результат, м.б. натолкнет на ответ.
Может это тебе зделать(прежде чем что писать я всгда проверяю свои слова).
 
Ответить с цитированием

  #16  
Старый 07.02.2009, 20:57
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Цитата:
Сообщение от AkyHa_MaTaTa  
Я не вижу смысла выполнения этого запроса, критерии по которым выбераються данные при главном запросе идентичны тем которые идут в подзапросе, в итоге мы получаем тот же результат что и в основном запросе просто лишний раз проходим по таблице.
Запросы разные вообще-то и результаты выполнения их тоже разные, в чем можно убедиться, скормив запрос базе данных.

Подзапрос возвращает ID элементов в корне. А основной запрос делает выборку этих элементов и их потомков. Без подзапроса ты просто этих потомков не найдешь.
 
Ответить с цитированием

  #17  
Старый 07.02.2009, 20:58
Аватар для VDShark
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Цитата:
Сообщение от AkyHa_MaTaTa  
Может это тебе зделать(прежде чем что писать я всгда проверяю свои слова).
Видимо данные на которых ты проверял были не учитывающими данную ситуацию... в чем я сильно сомневаюсь. Поэтому необходимо включать соображалку хотя бы иногда, а не безосновательно буровить на людей.
 
Ответить с цитированием

  #18  
Старый 07.02.2009, 21:01
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

а всё-таки есть проблема с таким подходом.

вот мой запрос:
PHP код:
 SELECT *
FROM comment
WHERE tid 
=1
AND parentid IS NULL
OR parentid
IN 
(

SELECT cid
FROM comment
WHERE tid 
=1
AND parentid IS NULL
ORDER BY ctime ASC
)
ORDER BY ctime ASC
LIMIT 0 
10 
таким образом: сначала выполняется подзапрос. он возвращает ВСЕ id у которых tid=1 - ну типа комменты относятся к определенной теме.

а потом уже мы выбираем вложенные комменты к этим комментам.

но мне надо выбрать от n до m комментов в подзапросе, т.к. у меня пейджинг.
а mysql говорит что её версия (5.0.15-nt) не поддерживает limit в подзапросах..

как это исправить? есть ещё какие-то способы выполнить подзапрос, но с лимитом?
 
Ответить с цитированием

  #19  
Старый 07.02.2009, 21:02
Аватар для AkyHa_MaTaTa
AkyHa_MaTaTa
Постоянный
Регистрация: 19.03.2007
Сообщений: 684
Провел на форуме:
3152874

Репутация: 1020


Отправить сообщение для AkyHa_MaTaTa с помощью ICQ
По умолчанию

Ну вобшето я даже и не предполагал на кого то буровить, если это так воспринял то извеняй, а теперь по делу, если тебе несложно покажи ту структуру данных при которых даный запрос будет работать, ибо как ты заметил моей сображалки не хватает, покажи плиз свою.
 
Ответить с цитированием

  #20  
Старый 07.02.2009, 21:05
Аватар для VDShark
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Цитата:
Сообщение от AkyHa_MaTaTa  
Ну вобшето я даже и не предполагал на кого то буровить, если это так воспринял то извеняй, а теперь по делу, если тебе несложно покажи ту структуру данных при которых даный запрос будет работать, ибо как ты заметил моей сображалки не хватает, покажи плиз свою.
Извиняю, надеюсь ты действительно не имел ввиду ничего дурного
А по делу - если вообще не будет потомков (т.е. у всех записей будет pid=0), тогда вернутся идентичные рзультаты, иначе же будут утеряны родители (если запрос без where pid=0).
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
F.A.Q по Пранку Nightmarе Статьи 43 28.03.2010 10:55
FAQ по выделенным серверам †Romi4† Авторские статьи 4 31.08.2009 16:19
Социальная инженерия. Профессиональное программирование. Последовательный взлом dinar_007 Болталка 15 23.12.2008 12:30



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ