O Shog9 continua fazendo minhas listas de links parecerem incríveis.
Essencialmente, eu escrevo um monte de consultas que extraem resultados do despejo de dados Stackoverflow. No entanto, minhas listas de links parecem muito feias e são difíceis de entender.
Usando alguma magia de formatação, o Shog9 consegue fazer as listas de links parecerem muito mais agradáveis.
Então, por exemplo, vou escrever uma consulta que retorna o seguinte:
id da pergunta, título, id do usuário, outras informações 4, Ao definir a opacidade de um formulário, devo usar um decimal ou duplo?, 8, Ovos McLaren, algumas outras coisas muito texto
E eu quero colá-lo em uma resposta no meta e torná-lo parecido com este:
ID da pergunta Nome do usuário - Outras informações
Ao definir a opacidade de um formulário ... Ovos Mclaren Algumas outras coisas ...
Portanto, supondo que meu ponto de partida seja a consulta que retorna as informações iniciais.
Quais são as etapas mínimas que posso executar no analisador de consulta para transformar os resultados em:
<h3> Question Id User Name 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...
</pre>
Minha ideia inicial é inserir os resultados em uma tabela temporária e, em seguida, executar um procedimento armazenado que irá transferir os dados para a estrutura desejada. Execute o proc, corte e cole e pronto.
Alguma solução baseada em TSQL candidata para este problema?
EDIT: Aceitando minha resposta, é a única solução com uma implementação.
Respostas:
2 para resposta № 1Não tem certeza de seus requisitos exatos, mas você considerou selecionar os dados como XML e, em seguida, aplicar uma transformação XSLT aos resultados?
1 para resposta № 2
Vou atualizar esta postagem com meu progresso à medida que refino meu procedimento:
Exemplo:
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
Resultados:
Reputação do usuário Perguntas e Respostas
Edward Tanguay 8317 465 24 mim 5767 311 29 Joan Venge 4844 226 14 Blankman 4546 310 1 acidzombie24 4359 371 32 obrigado 4350 416 21 Masi 4193 555 74 Rapaz preguiçoso 3230 94 12 KingNestor 3187 92 11 usuario 2084 79 6 George2 1973 263 1 Xaisoft 1944 174 12 John 1929 160 24 danmine 1901 53 3 zsharp 1771 145 16 transportadora 1742 56 8 JC Grubbs 1550 50 5 vg1890 1534 56 2 Coocoo4Cocoa 1514 143 0 Keand64 1513 83 5 Masi 4193 555 74 Rapaz preguiçoso 3230 94 12 KingNestor 3187 92 11 usuario 2084 79 6 George2 1973 263 1 Xaisoft 1944 174 12 John 1929 160 24 danmine 1901 53 3 zsharp 1771 145 16 transportadora 1742 56 8 JC Grubbs 1550 50 5 vg1890 1534 56 2 Coocoo4Cocoa 1514 143 0 Keand64 1513 83 5
O proc está na essência: http://gist.github.com/165544
0 para resposta № 3
Você poderia fazer algo como:
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
... mas veja como você vai. Pessoalmente, acho que FOR XML PATH é muito poderoso para obter resultados marcados da maneira que me convém.
Roubar