Array
(
)

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

Guifaria
   - 17 ago 2009

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


Emerson
   - 18 ago 2009

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

#Código

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 cursores no SQL Server.


Guifaria
   - 18 ago 2009

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?


Emerson
   - 18 ago 2009

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

o quê foi apresentado como resultado ?


Guifaria
   - 18 ago 2009

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


Guifaria
   - 18 ago 2009

É um sistema de Grade de calçados.


Emerson
   - 18 ago 2009

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].


Riqueciano
   - 16 mai 2011

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