Помогите составить запрос для MS Access

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Помогите составить запрос для MS Access

Сообщение Ronin » 16.01.2009 (Пт) 11:55

Доброго времени суток!

Я написал запрос.. Для MS SQL он выглядит так:
Код: Выделить всё
SELECT      pw.ID AS PaperID, pc.ID AS WorkPlanTableID, pp.ID AS WorkPlanID
FROM         pw LEFT JOIN
                      pc ON pw.ID = pc.IDOwner AND pc.Type = 102 FULL JOIN
                      pp ON pc.IDWorkPlan = pp.[ID]


Соответственно для MySQL он выглядит так:

Код: Выделить всё
SELECT      pw.ID AS PaperID, pc.ID AS WorkPlanTableID, pp.ID AS WorkPlanID
FROM         pw LEFT JOIN
                      pc ON pw.ID = pc.IDOwner AND pc.Type = 102 LEFT JOIN
                      pp ON pc.IDWorkPlan = pp.ID
UNION
SELECT     pw.ID AS PaperID, pc.ID AS WorkPlanTableID, pp.ID AS WorkPlanID
FROM         pw LEFT JOIN
                      pc ON pw.ID = pc.IDOwner AND pc.Type = 102 RIGHT JOIN
                      pp ON pc.IDWorkPlan = pp.ID


А мне надо теперь версию для MS Access.. Помогите пожалуйста кто знает? У меня ошибки летят что неверен JOIN

Заранее огромное спасибо!
С уважением,
Игорь Шувалов aka Ronin

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Помогите составить запрос для MS Access

Сообщение alibek » 16.01.2009 (Пт) 18:05

Заверни ON в джойнах в круглые скобки.
Lasciate ogni speranza, voi ch'entrate.

Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Re: Помогите составить запрос для MS Access

Сообщение Ronin » 20.01.2009 (Вт) 6:54

Ты имеешь ввиду так:
Код: Выделить всё
SELECT      pw.ID AS PaperID, pc.ID AS WorkPlanTableID, pp.ID AS WorkPlanID
FROM         (pw LEFT JOIN
                      pc ON (pw.ID = pc.IDOwner AND pc.Type = 102)) LEFT JOIN
                      pp ON pc.IDWorkPlan = pp.ID
UNION
SELECT     pw.ID AS PaperID, pc.ID AS WorkPlanTableID, pp.ID AS WorkPlanID
FROM         (pw LEFT JOIN
                      pc ON (pw.ID = pc.IDOwner AND pc.Type = 102)) RIGHT JOIN
                      pp ON pc.IDWorkPlan = pp.ID


Уже пробовал, все равно не помогает. Проблема в том что JOIN идет в разные стороны в одном запросе. А Access, видимо этого не может сделать. Как обойти?
С уважением,
Игорь Шувалов aka Ronin

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Помогите составить запрос для MS Access

Сообщение alibek » 20.01.2009 (Вт) 8:57

Тогда внутренние подзапросы и джойны сохраняй, как запросы и используй их.
Lasciate ogni speranza, voi ch'entrate.

Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Re: Помогите составить запрос для MS Access

Сообщение Ronin » 20.01.2009 (Вт) 9:08

alibek писал(а):Тогда внутренние подзапросы и джойны сохраняй, как запросы и используй их.


Не совсем понял что ты имел ввиду. Кодом не поможешь?
С уважением,
Игорь Шувалов aka Ronin

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Помогите составить запрос для MS Access

Сообщение alibek » 20.01.2009 (Вт) 10:59

select * from qTable1
union all
select * from qTable2
Lasciate ogni speranza, voi ch'entrate.

Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Re: Помогите составить запрос для MS Access

Сообщение Ronin » 20.01.2009 (Вт) 12:35

Нашел вот такое решение.. Разве нет ничего по проще?

Код: Выделить всё
SELECT      pw.ID AS PaperID, pc.ID AS WorkPlanTableID, pp.ID AS WorkPlanID
FROM         (pw LEFT JOIN
                      pc ON (pw.ID = pc.IDOwner AND pc.Type = 102)) LEFT JOIN
                      pp ON pc.IDWorkPlan = pp.ID
UNION
SELECT  pwpc.PaperID AS PaperID, pwpc.WorkPlanTableID AS WorkPlanTableID, pp.ID AS WorkPlanID
FROM         (SELECT pw.ID AS PaperID, pc.ID AS WorkPlanTableID, pc.IDWorkPlan FROM pw LEFT JOIN
                      pc ON (pw.ID = pc.IDOwner AND pc.Type = 102)) AS pwpc RIGHT JOIN
                      pp ON pwpc.IDWorkPlan = pp.ID
С уважением,
Игорь Шувалов aka Ronin


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 213

    TopList