Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL zaprs - Kak vybrat' tol'ko not-shared records ? / 8 сообщений из 8, страница 1 из 1
28.06.2002, 01:02:26
    #32034212
Snark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
est' tablichka :

ArticleID|AuthorID
-----------------------
1| 1
1 | 2
1 | 3
2 | 3


Trebuetsja naiti vse AuthorID kotorye prinadlezhat k odnoi i TOL'KO odnoi Article pri zadannom ArticleID
naprimer pri zadannom ArticleID = 1,
Resul'tat dolzhen byt' takoj :

ArticleID|AuthorID
-----------------------
1 | 1
1 | 2

Pomogite, please sostavit' SQL Query


Snark
...
Рейтинг: 0 / 0
28.06.2002, 02:16:54
    #32034215
Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT t.* 
FROM 
     (  /* Here we select only the poor Authors who wrote only one Article in their entire life */ 
          SELECT AuthorID FROM [tbl] GROUP BY AuthorID HAVING COUNT(*) =  1 
     ) x
     INNER JOIN [tbl] t
          ON x.AuthorID = t.AuthorID
WHERE t.ArticleID =  1 

-- Слон
...
Рейтинг: 0 / 0
28.06.2002, 02:25:03
    #32034216
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
Пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare @t table (ArticleID int, AuthorID int)

insert @t values( 1 , 1 )
insert @t values( 1 , 2 ) 
insert @t values( 1 , 3 )
insert @t values( 2 , 3 )

select AuthorID 
  from @t T1 
 where ArticleID =  1  
   and (select count(ArticleID) from @t T2 where T2.AuthorID = T1.AuthorID) =  1 


Удачи
...
Рейтинг: 0 / 0
28.06.2002, 04:50:20
    #32034217
Snark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
Vospol'zovalsja ideej Slona i perepisal bez vlozhennogo zaprosa :

SELECT tbl.AuthorID
FROM tbl INNER JOIN
tbl tbl_1 ON tbl.AuthorID = tbl_1.AuthorID
GROUP BY tbl.AuthorID, tbl_1.ArticleID
HAVING (COUNT(*) = 1) AND (tbl_1.ArticleID = 1)

budet li eto korrektno rabotat' ?

Regards, Snark
...
Рейтинг: 0 / 0
28.06.2002, 05:49:19
    #32034218
Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
Толко в случае возврата AuthorID, причем приведенный запрос эквивалентен:
Код: plaintext
SELECT AuthorID FROM [tbl] GROUP BY AuthorID HAVING COUNT(*) =  1 


А вот попробуйте теперь достать из Вашего запроса еще и ArticleID

-- Слон
...
Рейтинг: 0 / 0
28.06.2002, 05:50:51
    #32034219
Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
Вернее вру, если есть один-единственный ArticleID, то запрос конечно будет работать буз проблем. Но если будет что-то типа ArticleID IN (1, 2, 3), то не будет

-- Слон
...
Рейтинг: 0 / 0
28.06.2002, 11:22:17
    #32034244
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
Код: plaintext
1.
2.
3.
4.
select a.AuthorID 
from @t a 
left outer join @t b on b.ArticleID <> a.ArticleID and b.authorid = a.authorid 
where b.ArticleID is null
...
Рейтинг: 0 / 0
28.06.2002, 20:47:06
    #32034364
Snark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
Slonu
> А вот попробуйте теперь достать из Вашего запроса еще и ArticleID
> Но если будет что-то типа ArticleID IN (1, 2, 3), то не будет

a razve tak ne budet rabotat' ?

SELECT a.AuthorID, b.ArticleID
FROM tbl a INNER JOIN
tbl b ON a.AuthorID = b.AuthorID
GROUP BY a.AuthorID, b.ArticleID
HAVING (COUNT(*) = 1) AND (b.ArticleID IN (1, 2))
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL zaprs - Kak vybrat' tol'ko not-shared records ? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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