select avançados
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?
Posts
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?
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.
De uma olhada neste link http://ultradownloads.uol.com.br/download/Apostila-de-SQL-Server/
Tem uma apostila bem explicativa.
Espero ter colaborado.
Valeu Wilson.
Vou dar uma olhadinha depois darei o retorno.
Bjus
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
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
17/09/2010
Eriley Barbosa
Thiane esse as pode ser suprimido:
SELECT Nome, DAY(DataNascimento) Dia, MONTH(DataNascimento) Mes FROM Aluno
WHERE CodCurso = 111
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?
É 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"
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
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.
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)
27/09/2012
Alisson Santos
Select avançado varia muito do que vai necessitar.
Pois existem varios tipos de selects.
O que necessitaria nesse caso.
16/10/2012
Luciana Silveira
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.
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.