Вставить со статическими элементами |Динамический |Выбрать |Случайный |& Top для хорошей меры - PullRequest
0 голосов
/ 01 июня 2011

Привет, я работаю над странным проектом, который привел меня в некоторые странные места, и вот я снова. В сущности, существует поиск около 100 некоторых нечетных элементов управления (критерии, каждый из которых может иметь несколько или несколько вложенных элементов) (Multi Select ListBoxes) ... Мне не нравится использование Dynamic SQL, но из-за характера приложения я нашел это необходимым Я написал довольно короткий C # бэкэнд (это в ASP), который проверяет, какие элементы управления выбраны, принимает значение имени для элемента управления (которое является именем столбца) и создает динамическое предложение where ... Пример ...

SELECT TOP 50000 [lname] as 'last',[fname] as 'first',[phone],[wphone],[fax],[cellphone],[email],[state],[zip],[state_w],[zip_w],[employer],CONVERT(char, [datebirth], 101) FROM [RT2DBSQL_Review].[dbo].[Respondent] WHERE (education = '5' ) and (race = 'H' ) and (hours = '1' ) and (',' + CC5 like '%,2,%' or ',' + CC5 like '%,26,%' or ',' + CC5 like '%,12,%') and (',' + CC6 like '%,9,%' or ',' + CC6 like '%,23,%') and (',' + CC4 like '%,Nintendo DS,%') and (gender = 'M') AND Pro_resp is null

Это проверено и привязывает сетку, чтобы показать подходящих людей.

Следующий шаг. Предположим, что 1000 жизнеспособных кандидатов выбирают x количество случайных кандидатов и вставляют динамические значения из таблицы респондентов (см. Ниже), статический номер задания, статическую квоту - все это при подаче в предложении сумасшедшей задницы, где. У меня есть все отдельные части этого, но я запутался, заставляя его работать вместе.

что-то вроде:

CREATE PROCEDURE TEMPTEMP @jobnum varchar(100), @quota varchar(100), @X int, @Dynamic varchar(max) AS INSERT INTO [RT2DBSQL_Review].[dbo].[tbl_job_respondents] ([job_resp_job_number] ,[job_resp_respondent] ,[job_resp_name] ,[job_resp_phone] ,[job_resp_wphone] ,[job_resp_wphone_ext] ,[job_resp_cellphone] ,[job_resp_call_status] ,[job_resp_scheduled] ,[job_resp_recruited_by] ,[job_resp_part_status] ,[job_resp_coop_amt] ,[job_resp_amt_paid] ,[job_resp_status] ,[job_resp_part_check_no] ,[job_resp_session] ,[job_resp_date_pulled] ,[job_resp_date_recruited] ,[job_resp_quota] ,[job_resp_source] ,[job_resp_confirmed] ,[job_resp_referred_by] ,[query_print_field] ,[job_resp_exported] ,[job_resp_notes] ,[job_resp_childname]) VALUES (@jobnum ,(Select TOP (@X) RecordId ,lname + ', ' + fname ,phone ,wphone ,wphone_ext ,cellPhone ,'0' --static ,0 --static ,'' --static ,'' --static ,0 --static ,0 --static ,'0' --static ,null--static ,null--static ,GETDATE() ,GETDATE() ,@quota ,'Q' --static ,null--static ,null--static ,0 --static ,0 --static ,null ,null/*static*/FROM Respondent WHERE @Dynamic ORDER BY NEWID())) GO

Альтернатива состоит в том, чтобы загрузить все данные из списка в список массивов, что угодно ?? Любые идеи, у меня есть пердеть мозг с этим.

Заранее спасибо за помощь

1 Ответ

1 голос
/ 01 июня 2011

Прежде всего, я настоятельно рекомендую вам просмотреть SQL как любой другой код и добавить в него согласованное форматирование.

При этом следующий трюк должен выбрать 1000 случайных записей из ваших 50 000 первых записей.что у вас уже было.

SELECT TOP(1000) *
FROM (
    SELECT TOP 50000 [lname] as 'last'
      , [fname] as 'first'
      , [phone]
      , [wphone]
      , [fax]
      , [cellphone]
      , [email]
      , [state]
      , [zip]
      , [state_w]
      , [zip_w]
      , [employer]
      , CONVERT(char, [datebirth], 101)
      , RAND() as priority
    FROM [RT2DBSQL_Review].[dbo].[Respondent]
    WHERE (education = '5' )
      AND (race = 'H' )
      AND (hours = '1' )
      AND (',' + CC5 like '%,2,%' or ',' + CC5 like '%,26,%' or ',' + CC5 like '%,12,%')
      AND (',' + CC6 like '%,9,%' or ',' + CC6 like '%,23,%')
      AND (',' + CC4 like '%,Nintendo DS,%') and (gender = 'M')
      AND Pro_resp is null
  ) full_sample
ORDER BY priority

Исходя из того, что создание вашей вставки не должно быть слишком плохо.(Это будет беспорядок, но иногда это жизнь. Что еще более важно, это повторяющийся беспорядок, и повторяющиеся означает, что вы можете шаблонировать его.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...