Forum Webscript.Ru
Общие => Базы данных => Тема начата: 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 уже все утро потратил, не получается, помогите ПЛЗ
-
ошибка небольшая в подзапросе
(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)
но суть от этого не меняется, ПОМОГИТЕ ПЛЗ
-
Возможно поможет цель, с которой это пишется.
Каждый объект имеет одного родителя
при этом у родителя может быть сколько угодно детей
задача, выбрать те объекты, которые яляются минимальными корнями
то есть те объекты, у которых нет родителей в списке объектов, к которым разрешен доступ.
в результате получа.тся несколько корней, от которых строятся деревья объектов.
-
Хорошо, тогда другой вопрос, как написать LEFT JOIN не для таблицы, а для запроса.
то есть найти отстутствие между результатами двух запросов
-
найти отстутствие между результатами двух запросов
Результаты 2х запросов сохраняй в temporary table, а потом органицуешь еще один запрос используя эти 2 таблицы
-
это не конструктивный подход.
можно в таком случае написать свой перебор в цикле предварительно отсортировав элементы.
Только базу люди писали на Си, и серьезно оптимизировали, а мне надо написать на перле... медленно.
это ведь всего лишь часть авторизации.
-
Модератору, Нашли решение, завтра опубликую, ПЛЗ не стирай тему, пригодится в ФАК.
Всем СПАСИБО, кого это затронуло.