Мне нужно получить 5 случайных записей из таблицы плюс еще одну запись, основанную на данных из пользовательских настроек, сохраненных во второй таблице.
Вот два заявления, которые я создал до сих пор:
Получает любимую благотворительность на основе ключа, установленного в TBL_MEMBERS:
ВЫБЕРИТЕ DISTINCT TBL_CHARITIES. * ИЗ TBL_CHARITIES Присоединяйтесь к TBL_MEMBERS ON TBL_CHARITIES.cha_Key = TBL_MEMBERS.members_Favourite ГДЕ TBL_MEMBERS.members_Id = 16
Получает 5 случайных благотворительных организаций:
ВЫБРАТЬ ТОП 5 * ОТ TBL_CHARITIES ГДЕ cha_Active = 'TRUE' И cha_Key! = '1' ЗАКАЗАТЬ NEWID ();
При использовании в хранимой процедуре она возвращает только первый оператор SELECT на мою страницу .Net. Как я могу объединить два утверждения, не допуская повторения результатов (например, избранное не присутствует в 5 случайных записях?
Большое спасибо!
Ok! Так что теперь я обновил вещи и получил следующее:
CREATE PROCEDURE web.getRandomCharities ( @tmp_ID bigint --members ID ) AS BEGIN
WITH q AS
(
SELECT TOP 5 *
FROM TBL_CHARITIES
WHERE cha_Active = 'TRUE'
AND cha_Key != '1'
ORDER BY NEWID()
)
SELECT * FROM q
UNION ALL
SELECT TOP 1 * FROM (
SELECT * FROM TBL_CHARITIES WHERE TBL_CHARITIES.cha_Key IN
( SELECT members_Favourite FROM TBL_MEMBERS WHERE members_Id = @tmp_ID ) EXCEPT SELECT * FROM q ) tc
END
Теперь мне нужно иметь возможность записывать "cha_Key == '1'", но только если это не фаворит пользователя. Это возможно?
Спасибо за все, пока. Это действительно ценится.