Долгосрочный lurker здесь с моим первым вопросом.MS SQL SERVER 2008 RS OUTER APPLY и пустой RS
У меня есть следующие таблицы:
- Accounts
- Письмо
- номер телефоны
Я хочу, чтобы захватить все от счетов и для каждого Счета записи, самые последних Top 1 от сообщений электронной почты и PhoneNumbers, где Accounts.ID = Emails.AcctID или Accounts.ID = PhoneNumbers.AcctID.
Мои РС в настоящее время: SELECT, АССТ * со счетов AS АССТ OUTER APPLY (SELECT TOP 1 E. * FROM письма как E WHERE E.E_AcctID = ACCT.ACCT_ID ORDER BY E.E_ID DESC) ЭМ OUTER APPLY (. SELECT TOP 1 PH. * FROM PhoneNumbers AS PH WHERE PH.PH_AcctID = ACCT.ACCT_ID ORDER BY PH_ID DESC) PH WHERE ACCT.ACCT_Status> 2;
Проблема в том, что не каждая учетная запись имеет соответствующую запись в электронных письмах или PhoneNumbers.
Итак, некоторые из APPLY RS возвращаются пустым, а затем я получаю эту ошибку RS: ADODB.Recordset error '800a0cc1' Элемент не может быть найден в коллекции, соответствующей запрашиваемому имени или порядку.
Любая идея, как я могу работать с пустыми наборами записей?
Большое спасибо заранее. Cheers, Noah
1) тег используется СУБД (я предполагаю, что это должен быть sql-сервером) 2) разместить некоторые данные примера 3) опубликовать вашу попытку до сих пор –
Как сказал @vkp, больше данных было бы полезно. С учетом сказанного, по моему опыту присоединение к оконной функции быстрее, чем внешняя, и должно просто возвращать значения null. –
Спасибо за отзыв! Обновит ваши предложения. Cheers, N – nbardach