FOR no SQL. É possivel? Veja Questão..
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
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
Curtidas 0
Respostas
Emerson Nascimento
17/08/2009
creio que possa ser feito numa única instrução...
mas se você precisar de um ´FOR´, procure por [i:fa93622e5d]cursor[/i:fa93622e5d]es no SQL Server.
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.
GOSTEI 0
Guifaria
17/08/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?
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?
GOSTEI 0
Emerson Nascimento
17/08/2009
o que quer dizer ´não funcionou´? deu erro? o restultado não foi o esperado?
o quê foi apresentado como resultado ?
o quê foi apresentado como resultado ?
GOSTEI 0
Guifaria
17/08/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
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
GOSTEI 0
Guifaria
17/08/2009
É um sistema de Grade de calçados.
GOSTEI 0
Emerson Nascimento
17/08/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].
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].
GOSTEI 0
Riqueciano Soares
17/08/2009
Cursor eh muito pesado, mas o amigo pode usar um simples While
GOSTEI 0