consulta sql entre duas tabelas verificando o menor arquivo
SELECT S.IdServico AS sIdServico, S.DataCadastro AS sDataCadastro, S.Situacao AS sSituacao, S.IdTipo AS sIdTipo, A.Nome AS aNome, A.IdServico AS aIdServico, A.Principal AS aPrincipal FROM Servico AS S INNER JOIN Arquivo AS A ON A.IdServico = S.IdServico WHERE S.IdTipo = 1 AND S.Situacao = 1 AND A.Principal = 1 ORDER BY S.DataCadastro DESC;
Bom dia minha duvida é a seguinte no momento estou fazendo essa consulta para me retornar um arquivo que pertence a um serviço. Porem estou marcando manualmente
no banco um arquivo como verdadeiro e os outros com falsos para fazer esta consulta mas eu quero fazer ela da seguinte forma.
selecionar o menor IdArquivo onde o A.IdServico seja igual ao S.IdServico ja temtei fazer com a funcao (min) mas da erro.
quero fazer a consulta dessa forma para ficar mais facil e não precisar muda na tabela Arquivo um como princiopal e os outros como falsos pois teria que fazer varia querys.
se alguem tiver uma ideia que seja melhor eu tambem aceito kkkk.
Davi Maciel
Curtidas 0
Respostas
Marcos P
25/05/2015
Qual coluna refere-se a "IdArquivo" ? Repare que ela não aparece no select !!!
Coloque aqui a query que você fez quando tentou usar o min() ?
Coloque aqui a query que você fez quando tentou usar o min() ?
GOSTEI 0
Davi Maciel
25/05/2015
e pq nessa consulta nao coloquei.
a outra que estou tentado fazer e a segunte.
select min(IdArquivo) into @varArq,
S.IdServico AS sIdServico, S.DataCadastro AS sDataCadastro, S.Situacao AS sSituacao, S.IdTipo AS sIdTipo,
A.Nome AS aNome, A.IdServico AS aIdServico, A.Principal AS aPrincipal
from arquivo AS A
INNER JOIN Servico AS S ON A.IdServico = S.IdServico
where S.Situacao = 1 AND S.IdTipo = 2 ;
a outra que estou tentado fazer e a segunte.
select min(IdArquivo) into @varArq,
S.IdServico AS sIdServico, S.DataCadastro AS sDataCadastro, S.Situacao AS sSituacao, S.IdTipo AS sIdTipo,
A.Nome AS aNome, A.IdServico AS aIdServico, A.Principal AS aPrincipal
from arquivo AS A
INNER JOIN Servico AS S ON A.IdServico = S.IdServico
where S.Situacao = 1 AND S.IdTipo = 2 ;
GOSTEI 0
Marcos P
25/05/2015
Tente assim...
select S.IdServico AS sIdServico, S.DataCadastro AS sDataCadastro, S.Situacao AS sSituacao, S.IdTipo AS sIdTipo,
A.Nome AS aNome, A.Principal AS aPrincipal, min(IdArquivo) As MinArquivo
from arquivo A INNER JOIN Servico S ON (A.IdServico = S.IdServico)
where S.Situacao = 1 AND S.IdTipo = 2
group by S.IdServico, S.DataCadastro, S.Situacao, S.IdTipo, A.Nome, A.Principal;
GOSTEI 0
Davi Maciel
25/05/2015
a sua consulta retorna assim
[img]http://arquivo.devmedia.com.br/forum/imagem/391775-20150525-145118.png[/img]
e queria que retorna-se assim
[img]http://arquivo.devmedia.com.br/forum/imagem/391775-20150525-145142.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/391775-20150525-145118.png[/img]
e queria que retorna-se assim
[img]http://arquivo.devmedia.com.br/forum/imagem/391775-20150525-145142.png[/img]
GOSTEI 0
Davi Maciel
25/05/2015
o primeiro arquivo de cada serviço. ou o ultimo tanto faz ou pela data o negocio e que eu preciso buscar um entre os demais
GOSTEI 0
Marcos P
25/05/2015
Mas você precisa dos demais campos ?
Porque os colocou na query que me passou ?
Se for só o serviço, retire os demais campos e ajuste o GROUP BY...
Porque os colocou na query que me passou ?
Se for só o serviço, retire os demais campos e ajuste o GROUP BY...
select S.IdServico AS sIdServico, min(IdArquivo) As MinArquivo from arquivo A INNER JOIN Servico S ON (A.IdServico = S.IdServico) where S.Situacao = 1 AND S.IdTipo = 2 group by S.IdServico
GOSTEI 0
Davi Maciel
25/05/2015
preciso pelo menos do nome do arquivo para uma galeria de fotos
GOSTEI 0
Marcos P
25/05/2015
Você tem alguma ideia de como o "GROUP BY" funciona ?
Chegou a pesquisar para entender e adaptar a query ?
Ou a ideia é só achar alguém pra resolver seus problemas ?
Chegou a pesquisar para entender e adaptar a query ?
Ou a ideia é só achar alguém pra resolver seus problemas ?
select S.IdServico AS sIdServico, A.Nome AS aNome, min(IdArquivo) As MinArquivo from arquivo A INNER JOIN Servico S ON (A.IdServico = S.IdServico) where S.Situacao = 1 AND S.IdTipo = 2 group by S.IdServico, A.Nome;
GOSTEI 0
Davi Maciel
25/05/2015
GROUP BY nao pesquisei
quanto a query eu pesquisei mas nao encontrei nada. nao sou como uns que perguntam primeiro pra depois pesquisar
quanto a essa parte "Ou a ideia é só achar alguém pra resolver seus problemas"
se vc nao tem paciência e é uma pessoa grossa sai dai e deixa uma pessoa como mais paciência fazer isso
até então estava conversando com vc sobre o assunto mas se ta te ocupando mt um mt obrigado pela ajuda e deixa pra la que daqui a pouco aparece uma pessoa
com vontade de ensinar e nao de tirar onda com quem nao sabe. blz?
quanto a query eu pesquisei mas nao encontrei nada. nao sou como uns que perguntam primeiro pra depois pesquisar
quanto a essa parte "Ou a ideia é só achar alguém pra resolver seus problemas"
se vc nao tem paciência e é uma pessoa grossa sai dai e deixa uma pessoa como mais paciência fazer isso
até então estava conversando com vc sobre o assunto mas se ta te ocupando mt um mt obrigado pela ajuda e deixa pra la que daqui a pouco aparece uma pessoa
com vontade de ensinar e nao de tirar onda com quem nao sabe. blz?
GOSTEI 0
Marcos P
25/05/2015
Davi,
Acho que você não entendeu... o melhor modo de resolver seu problema é você adaptar o material que lhe passei, afinal, sua necessidade pode mudar daqui 5 minutos e aprendendo, você tem condições de resolver.
Quanto a possibilidade de ajudar, meu interesse não é resolver o problema de ninguém, mas, sim, fazer com que as pessoas compreendam minimamente o que estão fazendo.
Inclusive, por diversas vezes, aqui mesmo no site, já ajudei pessoas via skype, gtalk e suporte remoto.
Sempre nessa linha, de ensinar a pescar !
Perdoe-me se se fui rude contigo, mas não tinha a menor ideia de o quão sensível você era...
Acredito que seu problema está resolvido, com essa última versão da query.
Senão está, que alguém possa lhe auxiliar melhor do que eu, porque, eu, encerro por aqui.
Boa sorte !
Acho que você não entendeu... o melhor modo de resolver seu problema é você adaptar o material que lhe passei, afinal, sua necessidade pode mudar daqui 5 minutos e aprendendo, você tem condições de resolver.
Quanto a possibilidade de ajudar, meu interesse não é resolver o problema de ninguém, mas, sim, fazer com que as pessoas compreendam minimamente o que estão fazendo.
Inclusive, por diversas vezes, aqui mesmo no site, já ajudei pessoas via skype, gtalk e suporte remoto.
Sempre nessa linha, de ensinar a pescar !
Perdoe-me se se fui rude contigo, mas não tinha a menor ideia de o quão sensível você era...
Acredito que seu problema está resolvido, com essa última versão da query.
Senão está, que alguém possa lhe auxiliar melhor do que eu, porque, eu, encerro por aqui.
Boa sorte !
GOSTEI 0
Davi Maciel
25/05/2015
esta funcionado de boa vlw obrigado e que lendo cada um interpreta de uma maneira me desculpe tambem e que eu sei como é isso as vezes a pessoa pergunta sem ´pesquisar antes mas nao foi o meu caso. pesquisei bastante só que nao estava perguntando de maneira correta ao google por isso nao encontre mais uma vez me desculpe.
GOSTEI 0