Я повторно отправил этот вопрос, так как в нем были ошибки, которые, как мне кажется, я сейчас исправил, извинения.
Хорошо, следующая хранимая процедура работает нормально, но мне нужно добавить еще одно условие по отношению к другому стол называется tblItems
. Мне требуется tblAccounts.accountID
, чтобы присоединиться к tblItems.AccountID
, чтобы я мог проверить, если tblItems.fileID > 0
, и если да, то вернуть результаты. Вот таблицы, которые у меня есть и ожидаемые результаты ..
TBLACCOUNTS: AccountID, ContactName, SkypeUserName, friendlyOrderID
TBLORDERS: AccountID, ItemsAllowed
TBLITEMS: AccountID, FileID, ImageUrl
Я надеюсь достичь следующего:
4B900A74-E2D9-4837-B9A4-9E828752716E PETER PETE 827365
E82882D9-4837-B9A4-9E82-22228752716E MATTHEW MATT 373926
4B900A74-2323-1414-2525235252533333D JONATHAN JON 732792...
Именно так поступает первый приведенный ниже кодовый блок. Но мне нужны только строки, где у каждого пользователя есть хотя бы 1 fileID в tblItems. Результаты, которые я получаю, когда я пробую второй кодовый блок ниже, следующие:
4B900A74-E2D9-4837-B9A4-9E828752716E PETER PETE 827365
4B900A74-E2D9-4837-B9A4-9E828752716E PETER PETE 827365
4B900A74-E2D9-4837-B9A4-9E828752716E PETER PETE 827365...
Codeblock1
SELECT
*,
CASE WHEN RowNo < cnt THEN 'N' ELSE 'Y' END AS lastbox
FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY dateAdded DESC) AS [RowNo],
COUNT(*) OVER () cnt,
tblAccounts.skypeUserName, tblAccounts.contactName,
tblorders.friendlyOrderID
FROM
tblOrders
INNER JOIN
tblAccounts ON tblOrders.accountID = tblAccounts.accountID
WHERE
bootSaleDate = @bootSaleDate AND orderStatus = 'Completed') t
WHERE
RowNo BETWEEN (@page * 8) - 7 AND (@page * 8)
Вот что я пробовал (Codeblock2) ..
SELECT *,
CASE WHEN RowNo < cnt THEN 'N' ELSE 'Y' END AS lastbox
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY orderDate desc) as [RowNo],
COUNT(*) OVER () cnt,
tblAccounts.skypeUserName, tblAccounts.contactName, tblorders.friendlyOrderID
FROM tblOrders
INNER JOIN tblAccounts ON tblOrders.accountID=tblAccounts.accountID
INNER JOIN tblItems ON tblOrders.accountID=tblItems.accountID
WHERE EXISTS(select 1 from tblItems WHERE tblItems.fileID > 0 AND tblItems.accountID =
tblOrders.accountID AND tblOrders.bootSaleDate = @bootSaleDate) AND tblOrders.bootSaleDate =
@bootSaleDate AND tblOrders.orderStatus='Completed'
) t
WHERE RowNo BETWEEN (@page*8)-7 AND (@page*8)