Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / union -> joins - как написать запрос? / 7 сообщений из 7, страница 1 из 1
31.01.2008, 17:08
    #35101535
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union -> joins - как написать запрос?
всем привет

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

вьюшка вида

select * from A
union
select * from A
inner join B on A.id=B.A_id
union
select * from A
inner join C on A.id=C.A_id

работает ужасно плохо, хочется как-то через другое место
...
Рейтинг: 0 / 0
31.01.2008, 17:22
    #35101604
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union -> joins - как написать запрос?
с мсскл опыта нет. что должен возвращать запрос? в постгресе ошибка.

Код: plaintext
ERROR:  каждый запрос UNION должен иметь одинаковое число колонок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create table A ( id integer, name text );
create table B ( A_id integer, name text );
create table C ( A_id integer, name text );

select * from A
union
select * from A
inner join B on A.id=B.A_id
union
select * from A
inner join C on A.id=C.A_id
;
...
Рейтинг: 0 / 0
31.01.2008, 17:46
    #35101683
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union -> joins - как написать запрос?
мне нужен постгрес именно, к сожалению на нем все крутится
запрос я написал схематично :) естественно вместо * набор колонок, например, id, col1, col2 :)
...
Рейтинг: 0 / 0
31.01.2008, 17:49
    #35101692
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union -> joins - как написать запрос?
суть запроса - есть некая таблица данных, в каждой строке есть id пользователя (хозяина записи)
так же есть ещё две таблицы-связки, они определяют дополнительных пользователей, которые эту запись могут смотреть

т.е. грубо говоря мне нужно получить все записи пользователя (первый селект), все записи к которым пользователь может иметь некий доступ уровня B (юнион со вторым селектом, который джойнится с таблицей B) и все записи, к которым пользователь может иметь некий уровень доступа C (юнион с третьим селектом, который джойнится с таблицей C)
...
Рейтинг: 0 / 0
01.02.2008, 08:35
    #35102476
sarutobi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union -> joins - как написать запрос?
Код: plaintext
1.
2.
3.
4.
5.
select * from A where id=required
union
select * from B where B.A_id=required
union
select * from C where C.A_id=required
для одного пользователя.
...
Рейтинг: 0 / 0
01.02.2008, 09:46
    #35102649
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union -> joins - как написать запрос?
зы
работает ужасно плохо, хочется как-то через другое место
Ужасно плохо это как? Может бросите Explain analyze запроса? И нам веселее - и Вам.
...
Рейтинг: 0 / 0
01.02.2008, 09:58
    #35102684
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
union -> joins - как написать запрос?
зыхочется заменить вьюшку из юнионов

работает ужасно плохо

запрос я написал схематично :)не надо схематично :)

приведите точный текст (create view) "вьюшки из юнионов" (в постгресе конечно)

и скорость (explain analyze) тестового запроса, который "работает ужасно плохо"
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / union -> joins - как написать запрос? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]