Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gilbertojr

[Resolvido] SQL e DB

Recommended Posts

Olá, pessoal estou com uma dúvida aqui.

 

estou querendo fazer um lance . mas estou me deparando com uma dúvida cruel. vejam:

 

set rsAnos = cn.execute("SELECT DISTINCT ano FROM tbl_os GROUP BY ano ORDER BY ano ASC")
			While not rsAnos.eof
				response.Write(rsAnos("ano") & "<br>")
				rsAnos.movenext
			wend

tenho 3 colunas no DB: servico[valores], MES[numeros de 1 a 12] e ANO[9999].

o que quero é selecionar no campo ano, quantos anos diferentes tem, até ai estou conseguindo. beleza. ex: me retorna 2008 e 2009

 

a ideia era com o resultado dos anos ai de cima selecionar a quantidade meses[numeros de 1 a 12]

ex: 2008 e 2009 dentro destes anos selecionar a maior quantidade de meses[ex:10 registros com mes 6]

 

mas agora estou com dificuldades de montar um SQL ou script pra fazer isso. Alguém pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara pelo que eu entendi da para usar "and" e colocar as outras declarações, você tentou utilizar AND ?

veja. o que quero fazer é apenas mostrar em qual mês tive a maior quantidade de registros.

 

ex:

no ano de 2008 e mês 06 tive 120 registros.

no ano de 2009 e mês 03 tive 125 registros.

 

então teria que mostrar em qual mês tive a maior quantidade de registros. que foi em "2009 e mês 3" que teve 125 registros. entendeu?

 

só que ele vai pesquisar isso dentro da tabela toda em todos os anos registrados

 

 

mas não estou sabendo montar a consulta SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm, agora ficou mais claro, neste caso tente assim, e veja se da certo

 

listarmes = 10 'lista os registros com o mes de outrubro
listarano = 2009 ' lista os registros com o ano de 2009
set rsAnos = cn.execute("SELECT DISTINCT ano FROM tbl_os WHERE MONTH(mes) = " & listarmes & " and YEAR(ano) = " & listarano & "")

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar o SQL COUNT

SQL COUNT (column_name)

 

a função COUNT (column_name) retorna o número de valores (valores NULL não serão contados) da coluna especificada:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm, agora ficou mais claro, neste caso tente assim, e veja se da certo

 

listarmes = 10 'lista os registros com o mes de outrubro
listarano = 2009 ' lista os registros com o ano de 2009
set rsAnos = cn.execute("SELECT DISTINCT ano FROM tbl_os WHERE MONTH(mes) = " & listarmes & " and YEAR(ano) = " & listarano & "")

então. testei mas deu pau..

 

fiz assim mas ele parece estar somando os meses de todos os anos, não era pra fazer isso era pra selecionar a maior quantidade de registos dentre todos os anos. veja:

Dim rsQuantosAnos, maiorQuantRegMes, rsAnos
				maiorQuantRegMes = 0
				
			set rsAnos = cn.execute("SELECT DISTINCT ano FROM tbl_os GROUP BY ano ORDER BY ano ASC")
			
			While not rsAnos.eof
				Set rsQuantosAnos = cn.execute("SELECT *, COUNT(mes) AS geral FROM tbl_os WHERE ano = '"& rsAnos("ano") &"'")
					
					if maiorQuantRegMes < Cint(rsQuantosAnos("geral")) then
						maiorQuantRegMes = Cint(rsQuantosAnos("geral"))
					end if
					
				Set rsQuantosAnos = nothing
			rsAnos.movenext
			wend

			response.Write(maiorQuantRegMes)
e não deu certo, acho que estou fazendo errado

 

você pode usar o SQL COUNT

SQL COUNT (column_name)

 

a função COUNT (column_name) retorna o número de valores (valores NULL não serão contados) da coluna especificada:

certo, olha como estou fazendo, acho que estou ficando loco.. veja

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora entendi, ficou bem claro por que tava dificil entender hehehehehe

 

Por esta sua função, esta dando algum erro no asp, ou não apararece nada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ker contar o numero de registro k atende a um critério, né..

usa o SQL COUNT, ex:

 

SELECT * count(sua_coluna) AS Total
FROM TABELA WHERE MONTH(mes) = " & listarmes & " and YEAR(ano) = " & listarano & ""

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora entendi, ficou bem claro por que tava dificil entender hehehehehe

 

Por esta sua função, esta dando algum erro no asp, ou não apararece nada?

 

até aparece sim.. olha era pra dar "73" contei no DB,, huahua fiquei quase 30 minutos contando lá.

 

73 é a maior quantidade de registros em um mês que foi neste mês atual mês "6" deste ano "2009", no mês anterior foi 54 e no ano de 2008 teve um de 71.

 

então era pra ele me mostrar 73.

 

sabe a data no db esta dividida em 3 colunas tipo: dia, mes, ano.

 

o resultado que deu com este meu script ae foi "432", então pensei ele deve estar somando a maior quantidade de registro no mês de todos os anos.

o script ta assim:

Dim rsQuantosAnos, maiorQuantRegMes, rsAnos
				maiorQuantRegMes = 0
				
			set rsAnos = cn.execute("SELECT DISTINCT ano FROM tbl_os GROUP BY ano ORDER BY ano ASC")
			
			While not rsAnos.eof

				Set rsQuantosAnos = cn.execute("SELECT *, COUNT(mes) AS geral FROM tbl_os WHERE ano = '"& rsAnos("ano") &"'")

					Do Until rsQuantosAnos.eof
						if maiorQuantRegMes < Cint(rsQuantosAnos("geral")) then
							maiorQuantRegMes = Cint(rsQuantosAnos("geral"))
						end if
					rsQuantosAnos.movenext
					loop
					
				Set rsQuantosAnos = nothing
			rsAnos.movenext
			wend

			response.Write(maiorQuantRegMes & "<br>")

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ker contar o numero de registro k atende a um critério, né..

usa o SQL COUNT, ex:

 

SELECT * count(sua_coluna) AS Total
FROM TABELA WHERE MONTH(mes) = " & listarmes & " and YEAR(ano) = " & listarano & ""

sim atende mas este critério vem do RS anterior veja

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim

 

Set rsQuantosAnos = cn.execute("SELECT *, COUNT(mes) AS geral FROM tbl_os WHERE ano = '"& rsAnos("ano") &"' and mes = '"rsAnos("mes")"'")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim

 

Set rsQuantosAnos = cn.execute("SELECT *, COUNT(mes) AS geral FROM tbl_os WHERE ano = '"& rsAnos("ano") &"' and mes = '"rsAnos("mes")"'")

 

aiiiiiiiiiiiiiii,, na mosca.. nossa estava na cara. e nem tinha percebido agora deu certo.. mostrou os benditos 73... poxa valeu ae, "Patrique" e o "xanburzum" também... pela paciência. nossa quebro um galhão mesmo.

 

fico assim:

Dim rsQuantosAnos, maiorQuantRegMes, rsAnos
				maiorQuantRegMes = 0
				
			set rsAnos = cn.execute("SELECT DISTINCT ano, mes FROM tbl_os GROUP BY ano ORDER BY ano ASC")
			
			While not rsAnos.eof

				Set rsQuantosAnos = cn.execute("SELECT *, COUNT(mes) AS geral FROM tbl_os WHERE ano = '"& rsAnos("ano") &"' and mes = '"&rsAnos("mes")&"'")

					Do Until rsQuantosAnos.eof
						if maiorQuantRegMes < Cint(rsQuantosAnos("geral")) then
							maiorQuantRegMes = Cint(rsQuantosAnos("geral"))
						end if
					rsQuantosAnos.movenext
					loop
					
				Set rsQuantosAnos = nothing
			rsAnos.movenext
			wend

			response.Write(maiorQuantRegMes & "<br>")
muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

maravilha, k bom k deu certo, precisando estamos ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.