Автор Тема: Как написать это, без вложенного запроса  (Прочитано 3357 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Lord_DEMON

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ld.ok.ru
Люди, ПЛЗ, ХЕЛП

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

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

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ld.ok.ru
Как написать это, без вложенного запроса
« Ответ #1 : 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

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ld.ok.ru
Как написать это, без вложенного запроса
« Ответ #2 : 28 Февраля 2002, 15:29:12 »
Возможно поможет цель, с которой это пишется.
Каждый объект имеет одного родителя
при этом у родителя может быть сколько угодно детей
задача, выбрать те объекты, которые яляются минимальными корнями
то есть те объекты, у которых нет родителей в списке объектов, к которым разрешен доступ.
в результате получа.тся несколько корней, от которых строятся деревья объектов.

Оффлайн Lord_DEMON

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ld.ok.ru
Как написать это, без вложенного запроса
« Ответ #3 : 28 Февраля 2002, 18:39:58 »
Хорошо, тогда другой вопрос, как написать LEFT JOIN  не для таблицы, а для запроса.
то есть найти отстутствие между результатами двух запросов

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как написать это, без вложенного запроса
« Ответ #4 : 28 Февраля 2002, 19:17:26 »
Цитировать
найти отстутствие между результатами двух запросов


Результаты 2х запросов сохраняй в temporary table, а потом органицуешь еще один запрос используя эти 2 таблицы
На Машине Тьюринга далеко не уедешь.

Оффлайн Lord_DEMON

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ld.ok.ru
Как написать это, без вложенного запроса
« Ответ #5 : 28 Февраля 2002, 20:19:25 »
это не конструктивный подход.
можно в таком случае написать свой перебор в цикле предварительно отсортировав элементы.
Только базу люди писали на Си, и серьезно оптимизировали, а мне надо написать на перле... медленно.
это ведь всего лишь часть авторизации.

Оффлайн Lord_DEMON

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ld.ok.ru
Как написать это, без вложенного запроса
« Ответ #6 : 02 Марта 2002, 02:56:58 »
Модератору, Нашли решение, завтра опубликую, ПЛЗ не стирай тему, пригодится в ФАК.
Всем СПАСИБО, кого это затронуло.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28