powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL zaprs - Kak vybrat' tol'ko not-shared records ?
8 сообщений из 8, страница 1 из 1
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
    #32034212
Snark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
    #32034215
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
    #32034216
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример:

Код: 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
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
    #32034217
Snark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
    #32034218
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Толко в случае возврата AuthorID, причем приведенный запрос эквивалентен:
Код: plaintext
SELECT AuthorID FROM [tbl] GROUP BY AuthorID HAVING COUNT(*) =  1 


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

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

-- Слон
...
Рейтинг: 0 / 0
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
    #32034244
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
SQL zaprs - Kak vybrat' tol'ko not-shared records ?
    #32034364
Snark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL zaprs - Kak vybrat' tol'ko not-shared records ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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