powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Отобрать запись, только если вместе с ней присутствует и иная запись
8 сообщений из 8, страница 1 из 1
Отобрать запись, только если вместе с ней присутствует и иная запись
    #40084526
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А подскажите пожалуйста, как выбрать документы, входящие в пакет, только если в этом пакете также есть документы с ID a и e?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
DocumentID,	PacketNumber
a			660
b			660
c			660

a			663
c			663
d			663

b			664
c			664

c			666
d			666

c			669
d			669
e			669

ответ должен быть такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
a			660
b			660
c			660

a			663
c			663
d			663

c			669
d			669
e			669
...
Рейтинг: 0 / 0
Отобрать запись, только если вместе с ней присутствует и иная запись
    #40084527
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы прогуляли лекцию про exists?
...
Рейтинг: 0 / 0
Отобрать запись, только если вместе с ней присутствует и иная запись
    #40084528
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,
Код: sql
1.
2.
3.
4.
5.
SELECT DocumentID, PacketNumber
FROM t 
WHERE EXISTS
  (SELECT DocumentID
   FROM t WHERE DocumentID = 'a');



накинул такой EXISTS но чтото записей ещё больше стало не нужных )
...
Рейтинг: 0 / 0
Отобрать запись, только если вместе с ней присутствует и иная запись
    #40084531
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте условие
palladin600если в этом пакете также есть документы с ID a и e?
Подсказка коррелированный запрос
...
Рейтинг: 0 / 0
Отобрать запись, только если вместе с ней присутствует и иная запись
    #40084535
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257,
Код: sql
1.
2.
3.
4.
5.
SELECT t1.DocumentID, t1.PacketNumber
FROM t t1
WHERE PacketNumber IN
  (SELECT PacketNumber
   FROM t WHERE DocumentID = 'a' AND t1.PacketNumber = PacketNumber)



накидал такой запросик,
похоже, что отдаёт то что нужно, хотя это не точно, т.к. сужу чисто по количеству строк, а не по качеству.

не стыдно мне будет с таким запросом перед sql-сообществом? )
...
Рейтинг: 0 / 0
Отобрать запись, только если вместе с ней присутствует и иная запись
    #40084536
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palladin600
не стыдно мне будет с таким запросом перед sql-сообществом? )

будет )

1
не экономь на алиасах
2
IN - нах, EXISTS - рулит !
3
второго корр.подзапроса в условии не вижу ... у тебя ж по наличию 2-х условий "есть документы с ID a и e" вроде ...
...
Рейтинг: 0 / 0
Отобрать запись, только если вместе с ней присутствует и иная запись
    #40084537
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palladin600
ответ должен быть такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
a			660
b			660
c			660

a			663
c			663
d			663

c			669
d			669
e			669
вообще-то, тут нет ни одного пакета удовлетворяющего условию "в этом пакете также есть документы с ID a и e "
...
Рейтинг: 0 / 0
Отобрать запись, только если вместе с ней присутствует и иная запись
    #40084558
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palladin600
aleks222,
Код: sql
1.
2.
3.
4.
5.
SELECT DocumentID, PacketNumber
FROM t 
WHERE EXISTS
  (SELECT DocumentID
   FROM t WHERE DocumentID = 'a');



накинул такой EXISTS но чтото записей ещё больше стало не нужных )

Совсем вы там разбаловались, у БатЬки.

Код: sql
1.
2.
3.
4.
5.
SELECT DocumentID, PacketNumber
FROM t 
WHERE EXISTS  (SELECT *   FROM t  as t1 WHERE t1.DocumentID = 'a' and t1.PacketNumber = t.PacketNumber)
      and EXISTS  (SELECT *   FROM t  as t1 WHERE t1.DocumentID = 'b' and t1.PacketNumber = t.PacketNumber)
;
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Отобрать запись, только если вместе с ней присутствует и иная запись
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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