SQL повторное тестирование той же таблицы, которая возвращает 1-ую строку - PullRequest
0 голосов
/ 08 декабря 2011

Я новичок, когда дело доходит до sql, и это немного над моей головой, и я надеюсь, что кто-то может указать мне в правильном направлении ..

Я написал запрос, который корректно возвращает одну строку из правой таблицы, но мне нужно добавить еще один тест в последнее предложение where, которое перепроверяет таблицу и проверяет все записи в поле contitems.tofollow и ищет значения больше нули, которые соответствуют исходной строке contracts.ContNo, возвращенной ..

SELECT Contracts.*, Contitems.*
FROM   dbo.Contracts 
INNER JOIN dbo.ContItems 
 ON dbo.ContItems.RECID =       
  (SELECT TOP(1) RECID 
   FROM dbo.ContItems 
   WHERE (ContItems.CONTNO = dbo.Contracts.CONTNO))
WHERE  dbo.Contracts.SOURCE = 2 
 and (contracts.custom = 1 or contitems.tofollow > 0) 
 and contracts.status not in (4,9)

Мне нужно заменить contitems.tofollow > 0 тестом, который перепроверяет все contitems.tofollow результаты для каждого ContNO, но не знаю, как этого добиться ... Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 13 декабря 2011

Я подумал о другом способе сделать это, выбрав одну строку с наибольшим количеством TOFOLLOW - дальнейший тест не требуется.

   SELECT Contracts.*, Contitems.*
   FROM   dbo.Contracts 
   INNER JOIN dbo.ContItems 
   ON dbo.ContItems.RECID =       
  (SELECT TOP(1) RECID 
  FROM dbo.ContItems 
  WHERE (ContItems.CONTNO = dbo.Contracts.CONTNO)
   ORDER BY TOFOLLOW Desc)
 WHERE  dbo.Contracts.SOURCE = 2 
 and (contracts.custom = 1 or contitems.tofollow > 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...