Jump to content
joaomago

Ordenar dados

Recommended Posts

joaomago

Boas pessoal, estou com um problema em organizar dados numa listview pelo seu ID.

1004602_10200773746438956_333178600_n.jpg

É o seguinte eu tenho 3 querys a adicionar os dados na listview e é devido a isso que os ID's não aparecem ordenados. O que eu gostava agora era de criar algum metodo que me permitisse organizar tudo atráves do ID.

Alguém me sabe ajudar?

Share this post


Link to post
Share on other sites
Rechousa

Olá,

À partida poderás fazer o seguinte:

Em vez de teres três queries a adicionar dados à Listview, poderás ter uma query que corresponde às três, juntas por um UNION, exemplo:

SELECT id, Nome AS Descricao
FROM TabelaA
UNION
SELECT MeuID AS id, Descricao
FROM TabelaB
UNION
SELECT id, Descricao
FROM TabelaC
ORDER BY id ASC;

Espero ter ajudado,

Edited by Rechousa

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
joaomago

Dá-me erro, mais concretamente: ' All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists. '

Share this post


Link to post
Share on other sites
bioshock

Eventualmente também podes utilizar um objecto, tipo um DataSet, em que envias todas as informações para ele, ordenas-o e por fim envias para a listview.

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Dá-me erro, mais concretamente: ' All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists. '

O erro é precisamente o que é descrito: ao juntares várias tabelas com UNION, tens de ter o mesmo número de campos, exemplo:

SELECT id, Nome AS Descricao, NULL AS Valor
   FROM TabelaA
UNION
SELECT MeuID AS id, Descricao, 50 AS Valor
   FROM TabelaB
UNION
SELECT id, Descricao, ValorEntrada AS Valor
   FROM TabelaC
ORDER BY id ASC;


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
joaomago

O problema é que tenho inner joins e tudo pelo meio, o numero de campos não é o mesmo. Segue a respetiva query:

SELECT TOP 10000 [C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL11.JOAOMOTADATABASE\MSSQL\DATA\IDT_CONSULTING.MDF].[dbo].[identificacaoEntidade].[iD]
							  ,[C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL11.JOAOMOTADATABASE\MSSQL\DATA\IDT_CONSULTING.MDF].[dbo].[identificacaoEntidade].[Nome]
							  ,[Distrito]
							  ,[Concelho]
							  ,[Morada]
							  ,[CodigoPostal]
							  ,[Email]
							  ,[Telefone]
							  ,[Fax]
							  ,[Website]
							  ,[NumeroTrabalhadores]
							  ,[DataAtualizacao]
							  ,[Notas]
							  ,[TipoEntidade].[Categoria]
							  ,[setor].[Nome]

									FROM  [C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL11.JOAOMOTADATABASE\MSSQL\DATA\IDT_CONSULTING.MDF].[dbo].[identificacaoEntidade]
									INNER JOIN [C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL11.JOAOMOTADATABASE\MSSQL\DATA\IDT_CONSULTING.MDF].[dbo].[setor]
									on [identificacaoEntidade].[iD_Setor]  = [setor].ID

									INNER JOIN [C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL11.JOAOMOTADATABASE\MSSQL\DATA\IDT_CONSULTING.MDF].[dbo].[TipoEntidade]
									on [identificacaoEntidade].[iD_TipoEntidade]  = [TipoEntidade].ID

							UNION

							   SELECT TOP 10000 [iD]
							  ,[Nome]
							  ,[Distrito]
							  ,[Concelho]
							  ,[Morada]
							  ,[CodigoPostal]
							  ,[Email]
							  ,[Telefone]
							  ,[Fax]
							  ,[Website]
							  ,[NumeroTrabalhadores]
							  ,[DataAtualizacao]
							  ,[Notas]
							  ,[iD_TipoEntidade]
							  ,[iD_Setor]

									FROM [C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL11.JOAOMOTADATABASE\MSSQL\DATA\IDT_CONSULTING.MDF].[dbo].[identificacaoEntidade]

							UNION

							   SELECT TOP 10000 [C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL11.JOAOMOTADATABASE\MSSQL\DATA\IDT_CONSULTING.MDF].[dbo].[identificacaoEntidade].[iD]
							  ,[C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL11.JOAOMOTADATABASE\MSSQL\DATA\IDT_CONSULTING.MDF].[dbo].[identificacaoEntidade].[Nome]
							  ,[Distrito]
							  ,[Concelho]
							  ,[Morada]
							  ,[CodigoPostal]
							  ,[Email]
							  ,[Telefone]
							  ,[Fax]
							  ,[Website]
							  ,[NumeroTrabalhadores]
							  ,[DataAtualizacao]
							  ,[Notas]
							  ,[TipoEntidade].[Categoria]

									FROM  [C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL11.JOAOMOTADATABASE\MSSQL\DATA\IDT_CONSULTING.MDF].[dbo].[identificacaoEntidade]

									INNER JOIN [C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL11.JOAOMOTADATABASE\MSSQL\DATA\IDT_CONSULTING.MDF].[dbo].[TipoEntidade]
									on [identificacaoEntidade].[iD_TipoEntidade]  = [TipoEntidade].ID

							ORDER BY ID ASC;

Edited by joaomago

Share this post


Link to post
Share on other sites
brunobola

Tens várias Formas, mas se tiveres um SQL que funciona mas desordenado e queres uma solução rápida fazes um View com todos os campos que precisas e depois um Select da View ordenada pelo campo que entenderes.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.