2014-09-03 3 views
0

У меня есть запрос, и мне нужно, чтобы показать данные с отчетливым идDISTINCT не работает по мере необходимости

Query= "SELECT * FROM (" &_ 

" SELECT DISTINCT t.TICKET_ID as TICKET_ID, "&_ 
" ROW_NUMBER() OVER (ORDER BY t.TICKET_ID DESC)NUM,"&_ 
" t.SHORT_DESCRIPTION as SHORT_DESCRIPTION, "&_ 
" p.TITLE as product_name"&_ 
" FROM T_TICKET as t,T_USER_PRODUCT as up "&_ 
" ,T_USER as u, T_PRODUCT as p" & _ 
pReleaseFrom & _ 
" WHERE u.USER_ID=t.EDITOR_ID AND not t.SHORT_DESCRIPTION is null" & _ 
StateCondition & _ 

") A"& _ 
" WHERE NUM BETWEEN " & Session("Start") & " AND " & Session("Endi") 
Query=Query & " ORDER BY "&orderBy 

, но некоторые строки не различаются, и это даже не делая заказ t.TICKET_ID DESC ,

Любая помощь пожалуйста?

+1

Каков результат этой конкатенации строк? Это причина для неработающего sql? Если нет, это просто отвлекает нас от основной проблемы. –

+0

wich string точно? если вы имеете в виду pReleaseFrom, это из таблицы, которую я получаю из combobox в зависимости от того, что пользователь выбирает – amira

+0

Нет, 'Query'. –

ответ

2

Одна из проблем заключается в:

ROW_NUMBER() OVER (ORDER BY t.TICKET_ID DESC) NUM 

При выборе всех rownumbers, они являются числами, как 1,2,3,4,5 и по дизайну они различны. Так что нет смысла SELECT DISTINCT от разных номеров строк. Предположим, что TICKET_ID является уникальным первичным ключом.

Другое дело, что вы, возможно, есть проблемы в части:

FROM T_TICKET as t, T_USER_PRODUCT as up ,T_USER as u, T_PRODUCT as p 

Там вы на самом деле делает CROSS JOIN - Я не уверен, если это дизайн.

Кроме того, генерируя команду SQL так, как вы это делаете, она уязвима для атаки SQL-инъекций. Вместо этого вы должны использовать параметризованный запрос.

0

"The DISTINCT keyword eliminates duplicate rows from the results of a SELECT statement". Это означает, что если вы сделаете SELECT DISTINCT, в вашем наборе результатов не будет дубликатов строк . Строка просматривается целиком, чтобы определить, являются ли строки разными, а не один конкретный столбец в строке, как вы, кажется, думаете.

Смежные вопросы