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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar