select avançados

SQL Server

16/09/2010

Bom dia. Gente eu preciso aprender select avançado, para poder trabalhar em uma empresa de alimentos, onde dentro do select presicar ter relatorios com datas e somas.   Eu faço o curso Sistemas para Internet estou no 4º semestre, dei banco de dados no 3º semestre, mas estudei mais o basico, criação de tabela, select simplis.   Tem como vcs me ajudarem?
Thiane Rocha

Thiane Rocha

Curtidas 0

Respostas

Milton França

Milton França

16/09/2010

Bom dia Thiane, me diga primeiro o que é pra vc um SELECT simples, tem como vc colocar um exemplo pra eu saber apartir de qual ponto posso te ajudar?
GOSTEI 0
Thiane Rocha

Thiane Rocha

16/09/2010

select * from cadastro  where Nome = joao and endereço = rua jose   select * from vendas where compra <2 and numero = 1     é esse tipo de select que eu eu sei, com atualizar, deletar, apagar essas coisas. mas o seletc avanço sei quase nada.   Obrigada pela sua atenção.
GOSTEI 0
Wilson Junior

Wilson Junior

16/09/2010

De uma olhada neste link http://ultradownloads.uol.com.br/download/Apostila-de-SQL-Server/

Tem uma apostila bem explicativa.

Espero ter colaborado.
GOSTEI 0
Thiane Rocha

Thiane Rocha

16/09/2010

Valeu Wilson. Vou dar uma olhadinha depois darei o retorno. Bjus
GOSTEI 0
Milton França

Milton França

16/09/2010

Vamos começar da forma mais simples até atingirmos um nível mais complexo:   Lista de colunas da cláusula SELECT   Ex. 1 Recuperar o nome dos alunos de cada curso e nome do curso SELECT Aluno.Nome, Curso.Nome FROM Aluno, Curso WHERE Aluno.CodCurso = Curso.CodCurso   Na Cláusula WHERE estou adicionando a condição para garantir que os alunos mostrados tem alguma referencia de algum curso (no caso CodCurso) da tabela Curso.   Lista dos Alunos aprovados e o uso de Literal como coluna Ex. 2 SELECT A.Nome As 'Aluno', 'Aprovado' As 'Situação' FROM Aluno A, Turma T WHERE A.Num_Matricula = T.Num_Matricula AND T.media >= 7   A Cláusula WHERE permite mostrar os alunos que tem matrícula e o operador lógico AND vai garantir a exibição somente dos alunos que além de ter matrícula terá que ter média igual ou superior que 7.   Observe que neste exemplo estou alterando os nomes dos cabeçalhos das colunas.   Mostrar nome o dia e mes de nascimento dos alunos SELECT Nome, DAY(DataNascimento) As 'Dia', MONTH(DataNascimento) As 'Mês' FROM Aluno WHERE CodCurso = 111   Neste caso a cláusula WHERE filtrará o resultado mostrando apenas os alunos que estão no determinado curso.     veja se está sendo útil, daí eu continuarei... té mais    
GOSTEI 0
Thiane Rocha

Thiane Rocha

16/09/2010

Nilton esse 'AS" é do comando mesmo do sql? ex:  SELECT Nome, DAY(DataNascimento) As 'Dia', MONTH(DataNascimento) As 'Mês' FROM Aluno WHERE CodCurso = 111
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

16/09/2010

Thiane esse as pode ser suprimido: SELECT Nome, DAY(DataNascimento) Dia, MONTH(DataNascimento) Mes FROM Aluno WHERE CodCurso = 111
GOSTEI 0
Ader Santos

Ader Santos

16/09/2010

Nilton esse 'AS" é do comando mesmo do sql? ex:  SELECT Nome, DAY(DataNascimento) As 'Dia', MONTH(DataNascimento) As 'Mês' FROM Aluno WHERE CodCurso = 111
Thiane o 'AS' é um comando do SQL para nomear o resultado de uma expressão. Neste exemplo quando aparecer o resultado deste SELECT, na expressão DAY(DataNascimento) o título da coluna vai ser 'Dia", e da expressão MONTH(DataNascimento) o título da coluna será 'Mês'. Ok?
GOSTEI 0
Milton França

Milton França

16/09/2010

É isto mesmo, caro Eder, este "As" eu costumo dizer para os meus alunos que trauzido significa "Como" então serve para trocar o nome do cabeçalho da coluna para o nome sugerido logo após a referencia "As"
GOSTEI 0
Milton França

Milton França

16/09/2010

Agora usando o DISTINCT   Ex. SELECT Curso.Nome As 'Curso' FROM Aluno, Curso WHERE Aluno.CodCurso = Curso.CodCurso   O objetivo deste SELECT é recuperar todos os cursos com alunos inscritos, porém haverá cursos repetidos nos resultados desta pesquisa, para evitar estes registros duplicados usaremos o exemplo seguinte:   Ex. SELECT DISTINCT Curso.Nome As 'Curso' FROM Aluno, Curso WHERE Aluno.CodCurso = Curso.CodCurso
GOSTEI 0
Getulio Fraga

Getulio Fraga

16/09/2010

Ok, eu até já consigo fazer select destes tipos, mas tenho dificuldades em procurar por uma referência nula. Por exemplo, e seu precisasse saber quais cursos não há alunos inscritos?

Obrigado.
GOSTEI 0
Marcos Kruger

Marcos Kruger

16/09/2010

Existe muitas formas de fazer consultas SQL, entender o que se está fazendo principalmente a lógica feita é o caminho para conseguir aprender como montar consultas.

Trazer curso sem alunos inscritos.
Exemplo 1:
select Curso.* from Curso where Curso.codCurso not in(select Aluno.CodCurso from Aluno)

Exemplo 2:
select Curso* from Curso where
not exists(select top 1 1 from Aluno where Aluno.codCurso = Curso.codCurso)
GOSTEI 0
Alisson Santos

Alisson Santos

16/09/2010

Select avançado varia muito do que vai necessitar.
Pois existem varios tipos de selects.
O que necessitaria nesse caso.
GOSTEI 0
Luciana Silveira

Luciana Silveira

16/09/2010

Oi Thianne, boa tarde.

Acho que os colegas já deram bastante dicas.

Também é possível construir subconsultas (subqueries), openrowsets, unions, procedures, views, functions, cursores etc... vai depender da sua necessidade e lógica dos relatórios que precisa construir.

Segue um link excelente - http://www.criarweb.com/sql/

Espero ter ajudado. Boa sorte.
GOSTEI 0
Tiago

Tiago

16/09/2010

Procure entender bastante a lógica do sql, como realizar as consultas, funções,subqueries e etc.... dai quando estiver preparada, você poderia ver também a questão da linguagem extendida. Por exemplo:T-SQL,PL-SQL.
GOSTEI 0
POSTAR