Jump to content
Joaanaa.93

Array em sql

Recommended Posts

Joaanaa.93

Bom dia

Estou com um problema que não o consigo resolver

Queria ver se alguém por aqui poderia ajudar

Eu estou a fazer uma revista para ficar online,

e na parte do backoffice para adicionar revistas eu tenho o numero automático

o problema é que o numero de revista só vai buscar o máximo nr de revista

mas eu preciso de comparar a ver se não há uma revista eliminada

se houver tenho de seleccionar o numero de revista em falta, e não o máximo nr de revista

alguém poderia ajudar-me ?

Comprimentos

Share this post


Link to post
Share on other sites
pikax

podes explicar melhor?

Pelo o que percebi, queres uma query que te diga quais sao o nr das revistas que estao em falta, supondo qe cada edicao seja um inteiro e que incremente 1 valor por edicao, e' isto?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
Joaanaa.93

exacto

eu preciso qe ele veja se ah revistas em falta, e se houver selecionar esse numero e nao o maximo nr revista

Share this post


Link to post
Share on other sites
pikax

o que ja' tens feito neste momento?

Edited by pikax

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
Joaanaa.93

Neste momento esta assim:

SqlConnection sqlConn = new SqlConnection();
	    sqlConn.ConnectionString = ConfigurationManager.ConnectionStrings["inovaConn"].ConnectionString;
	    SqlCommand sqlCommand = new SqlCommand();
	    sqlCommand.Connection = sqlConn;
	    sqlCommand.CommandText = "Select  nr_revista From Revistas_Header where id = (Select MAX(id) From Revistas_Header)";
	    sqlConn.Open();
	    SqlDataReader dR = sqlCommand.ExecuteReader();

	    while (dR.Read())
	    {
		    nn = dR[0].ToString();
	    }
	    nr = Convert.ToInt16(nn);
	    nr += 1;

Falta agora é ver os números que la estão

Share this post


Link to post
Share on other sites
pikax

sqlCommand.CommandText = "Select  nr_revista From Revistas_Header";

assim, tens todos os nr das revistas, tens que alterar o codigo para gravar num array, ou podes mandar para um datatable


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
Joaanaa.93

sim, isso ja tinha pensado, mas o meu problema é como comparar

estou a pensar fazer um count de nr revista para depois comparar com o max nr

mas nao sei até que ponto é que funciona

Share this post


Link to post
Share on other sites
pikax

o algoritmo bastante simples, seria algo assim:

criar array arr;
criar array arrNaotem;
criar inteiro inicio, fim;
criar interiro it;

preencher arr com o numero de revistas;
for it = inicio, it<fim, ++it;
 se o arr nao conter o it
 inserir it no arrNaoTem
end for
percorrer o arrNaoTem e imprimir

Edited by pikax

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
AntonioMateus

segue um exemplo como fazer isso em SQL

set nocount on
declare @maxRevista int
declare @incremento int
create table #tmpRevistas (nr_revista int)
set @incremento = 1
set @maxRevista = isnull((select max(nr_revista) from Revistas_Header),0)
while @incremento <= @maxRevista
BEGIN
if(not exists(select * from Revistas_Header where nr_revista =@incremento ))
begin
insert #tmpRevistas
values (@incremento)
end
set @incremento = @incremento + 1
END

SELECT * from #tmpRevistas
drop table #tmpRevistas

Edited by AntonioMateus

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.