Forum Webscript.Ru

Общие => Базы данных => Тема начата: Lord_DEMON от 28 Февраля 2002, 14:51:05

Название: Как написать это, без вложенного запроса
Отправлено: Lord_DEMON от 28 Февраля 2002, 14:51:05
Люди, ПЛЗ, ХЕЛП

Вот такая есть штука

SELECT DISTINCT pg1.id
FROM
objects AS o1, permissions AS p1, pages AS pg1
WHERE
p1.obj=o1.id AND pg1.id=o1.pages AND p1.permit=1
AND pg1.parent NOT IN
(SELECT pages2.id FROM objects AS o2, permissions AS p2, pages AS pg2
WHERE p2.obj=o2.id AND pg2.id=o2.pages AND p2.permit=1)

Надо ее переписать под MySQL без подзапроса.
Я с этим LEFT JOIN уже все утро потратил, не получается, помогите ПЛЗ
Название: Как написать это, без вложенного запроса
Отправлено: Lord_DEMON от 28 Февраля 2002, 14:59:09
ошибка небольшая в подзапросе

(SELECT pg2.id FROM objects AS o2, permissions AS p2, pages AS pg2
WHERE p2.obj=o2.id AND pg2.id=o2.pages AND p2.permit=1)

но суть от этого не меняется, ПОМОГИТЕ ПЛЗ
Название: Как написать это, без вложенного запроса
Отправлено: Lord_DEMON от 28 Февраля 2002, 15:29:12
Возможно поможет цель, с которой это пишется.
Каждый объект имеет одного родителя
при этом у родителя может быть сколько угодно детей
задача, выбрать те объекты, которые яляются минимальными корнями
то есть те объекты, у которых нет родителей в списке объектов, к которым разрешен доступ.
в результате получа.тся несколько корней, от которых строятся деревья объектов.
Название: Как написать это, без вложенного запроса
Отправлено: Lord_DEMON от 28 Февраля 2002, 18:39:58
Хорошо, тогда другой вопрос, как написать LEFT JOIN  не для таблицы, а для запроса.
то есть найти отстутствие между результатами двух запросов
Название: Как написать это, без вложенного запроса
Отправлено: fidget от 28 Февраля 2002, 19:17:26
Цитировать
найти отстутствие между результатами двух запросов


Результаты 2х запросов сохраняй в temporary table, а потом органицуешь еще один запрос используя эти 2 таблицы
Название: Как написать это, без вложенного запроса
Отправлено: Lord_DEMON от 28 Февраля 2002, 20:19:25
это не конструктивный подход.
можно в таком случае написать свой перебор в цикле предварительно отсортировав элементы.
Только базу люди писали на Си, и серьезно оптимизировали, а мне надо написать на перле... медленно.
это ведь всего лишь часть авторизации.
Название: Как написать это, без вложенного запроса
Отправлено: Lord_DEMON от 02 Марта 2002, 02:56:58
Модератору, Нашли решение, завтра опубликую, ПЛЗ не стирай тему, пригодится в ФАК.
Всем СПАСИБО, кого это затронуло.