Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 запрос из двух аналогичных таблиц  [new]
Manonia
Member

Откуда: Иркутск
Сообщений: 112
Есть табличка1(ex_id, name), есть связанная таблица2(id1, ex_id, test) и есть другая таблица3(id2, ex_id, test). Нужно вывести ex_id, name, которые есть в двух последних таблицах.

SELECT DISTINCT ex_id, name
FROM табличка1 AS 1
INNER JOIN таблица2 AS 2
ON 2.ex_id = 1.ex_id
INNER JOIN таблица3 as 3
ON 3.ex_id = 1.ex_id
where 2.test = @число

Запрос выдает данные относящиеся ко второй табличке, третью игнорит. Дело в том, что и из третьей таблички должны выбраться те данные, у которых test=@число(т.е. по сути 2 и 3 аналогичны). Вроде запрос не сложный должен быть, а не получается :(
11 окт 12, 16:18    [13303626]     Ответить | Цитировать Сообщить модератору
 Re: запрос из двух аналогичных таблиц  [new]
tetxx
Member

Откуда:
Сообщений: 297
select t2.ex_id, (select name from табличка1 t1 where t1.ex_id = t2.ex_id) name
from табличка2 t2
where exists (select 1 from таблица3 t2 where t3.ex_id = t2.ex_id and t3.ex_id = @число)
and t2.test = @число
group by t2.ex_id
11 окт 12, 16:30    [13303712]     Ответить | Цитировать Сообщить модератору
 Re: запрос из двух аналогичных таблиц  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5118
where exists() or exists()
11 окт 12, 16:31    [13303720]     Ответить | Цитировать Сообщить модератору
 Re: запрос из двух аналогичных таблиц  [new]
Manonia
Member

Откуда: Иркутск
Сообщений: 112
не работает... может уточнить: первая таблица содержит нужные нам данные - имя и id. Вторая id(связка по этому полю) и некое поле по которому и нужно выводить данные(user_id, например) и вторая аналогичная...
11 окт 12, 16:44    [13303797]     Ответить | Цитировать Сообщить модератору
 Re: запрос из двух аналогичных таблиц  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5118
Manonia
не работает...
чего не работает?
declare @t1 table(ex_id int not null, name varchar(10) not null)
declare @t2 table(id int identity primary key, ex_id int not null, test int not null)
declare @t3 table(id int identity primary key, ex_id int not null, test int not null)

declare @t int=2

insert @t1(ex_id, name)
select 1,'A' union all select 2,'B'

insert @t2(ex_id, test)
select 1,1 union all select 2,2

insert @t3(ex_id, test)
select 1,1 union all select 2,2


select
ex_id, name
from
@t1 t1
where
exists(select 1 from @t2 t2 where t2.ex_id=t1.ex_id and t2.test=@t)
and
exists(select 1 from @t3 t3 where t3.ex_id=t1.ex_id and t3.test=@t)
11 окт 12, 17:07    [13303952]     Ответить | Цитировать Сообщить модератору
 Re: запрос из двух аналогичных таблиц  [new]
Manonia
Member

Откуда: Иркутск
Сообщений: 112
не знаю почеум не работает, перепроверила ещё раз, на вашем примере работает - на моём нет. Может ли это быть из-за того, что таблицы 2 и 3 на самом деле имеют ещё внешние ключи?
11 окт 12, 17:24    [13304069]     Ответить | Цитировать Сообщить модератору
 Re: запрос из двух аналогичных таблиц  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Manonia
не знаю почеум не работает, перепроверила ещё раз, на вашем примере работает - на моём нет. Может ли это быть из-за того, что таблицы 2 и 3 на самом деле имеют ещё внешние ключи?


а у вас в таблицах поля тоже атрибут not null имеют?
11 окт 12, 17:30    [13304108]     Ответить | Цитировать Сообщить модератору
 Re: запрос из двух аналогичных таблиц  [new]
Manonia
Member

Откуда: Иркутск
Сообщений: 112
да, not null...
11 окт 12, 17:41    [13304187]     Ответить | Цитировать Сообщить модератору
 Re: запрос из двух аналогичных таблиц  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5118
Manonia,

тогда, наверное, стоит привести скрипты создания ваших таблиц и пример ваших данных (по несколько строк для каждой) и пример результата каковой должон получиться.
11 окт 12, 19:51    [13304761]     Ответить | Цитировать Сообщить модератору
 Re: запрос из двух аналогичных таблиц  [new]
Manonia
Member

Откуда: Иркутск
Сообщений: 112
всё заработало, внимательнее нужно мне быть ) спасибо, ребята!
12 окт 12, 13:18    [13308110]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить