Форматирование списков ссылок с использованием TSQL - PullRequest
1 голос
/ 08 августа 2009

Shog9 продолжает заставлять мои списки ссылок выглядеть потрясающе.

По сути, я пишу несколько запросов, которые извлекают результаты из дампа данных Stackoverflow. Тем не менее, мои списки ссылок выглядят очень некрасиво и их трудно понять.

Используя некоторую магию форматирования, Shog9 удается сделать списки ссылок более привлекательными.

Так, например, я напишу запрос, который возвращает следующее:

question id,title,user id, other info
4,When setting a form’s opacity should I use a decimal or double?,8,Eggs McLaren, some other stuff lots of text

И я хочу, чтобы он вставил его в ответ на мета и выглядел так:

Идентификатор вопроса Имя пользователя Другая информация

<a href="https://stackoverflow.com/questions/4">When setting a form’s opacity...</a>  <a href="https://stackoverflow.com/users/8/eggs-mclaren">Eggs Mclaren</a>   Some other stuff...

Итак, предполагая, что моей отправной точкой является запрос, который возвращает начальную информацию.

Какое наименьшее количество шагов, которые я могу выполнить в анализаторе запросов, чтобы превратить результаты в:

<code><h3>&nbsp;&nbsp;Question Id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Other Info </h3>
<pre>
<a href="https://stackoverflow.com/questions/4">When setting a form’s opacity...</a>  <a href="https://stackoverflow.com/users/8/eggs-mclaren">Eggs Mclaren</a>   Some other stuff...

Сначала я хочу вставить результаты во временную таблицу, а затем запустить сохраненный процесс, который сгладит данные в нужную мне структуру. Запустите proc, вырежьте, вставьте и все готово.

Кто-нибудь из кандидатов на основе TSQL может решить эту проблему?

РЕДАКТИРОВАТЬ: Принятие моего ответа, это единственное решение с реализацией.

Ответы [ 3 ]

2 голосов
/ 08 августа 2009

Не уверены в своих точных требованиях, но рассматривали ли вы вопрос выбора данных в виде XML и затем применения XSLT-преобразования к результатам?

1 голос
/ 11 августа 2009

Я буду обновлять этот пост с моим прогрессом, так как я уточняю свой процесс:

Пример:

select top 20
    UserId = u.Id, 
    UserName = u.DisplayName,
    u.Reputation,
    sum(case when p.ParentId is null then 1 else 0 end) as Questions, 
    sum(case when p.ParentId is not null then 1 else 0 end) as Answers 
into #t
from Users u
join Posts p on p.OwnerUserId = u.Id 
where p.CommunityOwnedDate is null and p.ClosedDate is null
group by u.Id, u.DisplayName, u.Reputation
having sum(case when p.ParentId is not null then 1 else 0 end) < sum(case when p.ParentId is null then 1 else 0 end) / 6
order by Reputation desc 

exec spShog9

Результаты:

Репутация пользователя Вопросы Ответы

<a href="https://stackoverflow.com/users/4639">Edward Tanguay</a> 8317 465 24 
<a href="https://stackoverflow.com/users/4653">me</a>             5767 311 29 
<a href="https://stackoverflow.com/users/51816">Joan Venge</a>     4844 226 14 
<a href="https://stackoverflow.com/users/39677">Blankman</a>       4546 310 1  
<a href="https://stackoverflow.com/users/34537">acidzombie24</a>   4359 371 32 
<a href="https://stackoverflow.com/users/62553">Thanks</a>         4350 416 21 
<a href="https://stackoverflow.com/users/54964">Masi</a>           4193 555 74 
<a href="https://stackoverflow.com/users/53262">LazyBoy</a>        3230 94  12 
<a href="https://stackoverflow.com/users/64878">KingNestor</a>     3187 92  11 
<a href="https://stackoverflow.com/users/31247">Nick</a>           2084 79  6  
<a href="https://stackoverflow.com/users/63235">George2</a>        1973 263 1  
<a href="https://stackoverflow.com/users/33690">Xaisoft</a>        1944 174 12 
<a href="https://stackoverflow.com/users/81800">John</a>           1929 160 24 
<a href="https://stackoverflow.com/users/10352">danmine</a>        1901 53  3  
<a href="https://stackoverflow.com/users/49632">zsharp</a>         1771 145 16 
<a href="https://stackoverflow.com/users/20498">carrier</a>        1742 56  8  
<a href="https://stackoverflow.com/users/4541">JC Grubbs</a>      1550 50  5  
<a href="https://stackoverflow.com/users/31221">vg1890</a>         1534 56  2  
<a href="https://stackoverflow.com/users/40882">Coocoo4Cocoa</a>   1514 143 0  
<a href="https://stackoverflow.com/users/98188">Keand64</a>        1513 83  5  
<a href="https://stackoverflow.com/users/54964">Masi</a>           4193 555 74 
<a href="https://stackoverflow.com/users/53262">LazyBoy</a>        3230 94  12 
<a href="https://stackoverflow.com/users/64878">KingNestor</a>     3187 92  11 
<a href="https://stackoverflow.com/users/31247">Nick</a>           2084 79  6  
<a href="https://stackoverflow.com/users/63235">George2</a>        1973 263 1  
<a href="https://stackoverflow.com/users/33690">Xaisoft</a>        1944 174 12 
<a href="https://stackoverflow.com/users/81800">John</a>           1929 160 24 
<a href="https://stackoverflow.com/users/10352">danmine</a>        1901 53  3  
<a href="https://stackoverflow.com/users/49632">zsharp</a>         1771 145 16 
<a href="https://stackoverflow.com/users/20498">carrier</a>        1742 56  8  
<a href="https://stackoverflow.com/users/4541">JC Grubbs</a>      1550 50  5  
<a href="https://stackoverflow.com/users/31221">vg1890</a>         1534 56  2  
<a href="https://stackoverflow.com/users/40882">Coocoo4Cocoa</a>   1514 143 0  
<a href="https://stackoverflow.com/users/98188">Keand64</a>        1513 83  5

Процесс в гисте: http://gist.github.com/165544

0 голосов
/ 09 августа 2009

Вы можете сделать что-то вроде:

with 
data (question_id,title,user_id, username ,other_info) as 
(
select 4,'When setting a form''s opacity should I use a decimal or double?',8,'Eggs McLaren', 'some other stuff lots of text'
union all
select 5,'Another q title',9,'OtherUsername', 'some other stuff lots of text')
select 
    (select 'http://stackoverflow.com/questions/' + cast(question_id as varchar(10)) as [@href], title as [*] for xml path('a')) as questioninfo
    ,(select 'http://stackoverflow.com/users/' + cast(user_id as varchar(10)) + '/' + replace(username, ' ', '-') as [@href], username as [*] for xml path('a')) as userinfo
    , other_info
from data

... но посмотри, как ты пойдешь. Лично я считаю, что FOR XML PATH очень эффективен для получения отмеченных результатов удобным для меня способом.

Rob

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