FOR no SQL. É possivel? Veja Questão..

17/08/2009

0

Olá pessoal, sou novo nessa area de SQl e estou quebrando a cabeça aqui.

tenho 2 tabelas relacionadas aqui: Grade (Grade_Id, FK_Fornecedor )
Item_Grade (Numero, Quantidade, FK GradeiD)

Quero fazer o seguinte:

Y = (SELECT DISTINCT Grade.GradeId FROM Grade WHERE ColaboradorId = ´2´)

OBS: isso me retornaria os valores de das grades. EX. 1,8,4

Depois para cada ocorrência(Y) acima, gostaria de selecionar:

SELECT item_grade.numero, item_grade.quantidade
FROM _Grade INNER JOIN _item_grade ON _Grade.GradeId = item_grade.GradeId
Where Grade.Fornecedor = X
AND Grade.GradeId = Item_grade.GradeId
AND GradeId = Y

Não sei como realizar esse procedimento.
É possivel usar um FOR no SQL?

Agradeço desde Já

Guilherme Antunes
Quinto Elemento


Guifaria

Guifaria

Responder

Posts

18/08/2009

Emerson Nascimento

creio que possa ser feito numa única instrução...

SELECT
  grade.GradeId, item_grade.numero, item_grade.quantidade
FROM
  Grade
INNER JOIN
  item_grade ON item_grade.GradeId = Grade.GradeId
Where
  Grade.Fornecedor = X
  AND Grade.ColaboradorId = ´2´


mas se você precisar de um ´FOR´, procure por [i:fa93622e5d]cursor[/i:fa93622e5d]es no SQL Server.


Responder

18/08/2009

Guifaria

Prezado emerson, me parece que nao deu certo.

segue abaixo o que quero com mais clareza. as vezes podem me ajudar:

Quero fazer o seguinte:

Y = (SELECT DISTINCT Grade.GradeId FROM Grade WHERE FornecedorId = ´2´)

OBS: isso me retornaria os valores de das grades. EX. 1,8,4

Depois para cada ocorrência(Y) acima, gostaria de selecionar:

SELECT item_grade.numero, item_grade.quantidade
FROM _Grade INNER JOIN _item_grade ON _Grade.GradeId = item_grade.GradeId
Where Grade.Fornecedor = X
AND Grade.GradeId = Item_grade.GradeId
AND GradeId = Y

O RESULTADO SERIA ALGO ASSIM:

PARA GradeId = 1
NUMERO 34 35 36 37
QUANTIDADE 1 5 5 1

PARA GradeId =8
NUMERO 34 35 36 37 38 39
QUANTIDADE 1 2 3 3 2 1

PARA GradeId = 4
NUMERO 25 26 27 28 29 30
QUANTIDADE 1 2 2 2 3 2

Alguem se pode colaborar?


Responder

18/08/2009

Emerson Nascimento

o que quer dizer ´não funcionou´? deu erro? o restultado não foi o esperado?

o quê foi apresentado como resultado ?


Responder

18/08/2009

Guifaria

Emerson, o resultado não foi o esperado, rodou blz e retornou esse resultado:
GradeID Numero e Quantidade respectivamente:
1341
1352
1363
1373
1382
1391
2371
2382
2393
2403
2412
2421

Gostaria do resultado assim:
PARA GradeId = 1
NUMERO 34 35 36 37 ...
QUANTIDADE 1 5 5 1 ...


Uso Sql Server 2005. e Visual Studio


Responder

18/08/2009

Guifaria

É um sistema de Grade de calçados.


Responder

18/08/2009

Emerson Nascimento

na verdade os dados são os esperados. a forma de saída dos dados não é.

se você prefere que o SQL Server te dê o resultado final, estude o comando DECLARE CURSOR, FETCH NEXT, @@FETCH_STATUS, DEALLOCATE...

um exemplo simples pode ser encontrado [url=http://willasrari.com/blog/create-a-cursor-in-sql-server/000158.aspx]aqui[/url].


Responder

16/05/2011

Riqueciano Soares

Cursor eh muito pesado, mas o amigo pode usar um simples While
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar