Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

digo23

Consultas ao Banco

Recommended Posts

Imagem Postada

Imagem Postada

Imagem Postada

 

 

 

Olá , alguem poderia me ajudar a fazer umas consultas ao banco , (exemplos) , consegui fazer aquela ai de baixo , mas foi dificil.

 

Se puderem colaborar.

vlw

 

 

. As consultas devem envolver sempre pelo menos três tabelas;

 

SELECIONE O CODIGO DO EMPREGADO , NOME E SALARIO , DOS EMPREGADOS QUE NÃO POSSUEM NENHUM DEPENDENTE.

 

REPOSTA :

 

COD_EMP NOME SALARIO

---------- -------------------------------------------------- ----------

9999 Roberto Santos 300

 

select e.cod_emp, e.nome, e.salario

from empregados e

where not exists

(select null

from dependentes d

where d.cod_emp = e.cod_emp)

order by e.nome;

Compartilhar este post


Link para o post
Compartilhar em outros sites

SQL> SELECT	job, SUM(sal) PAYROLL  2  FROM emp  3  WHERE job NOT LIKE 'SALES%'  4  GROUP BY job  5  HAVING SUM(sal)>5000  6  ORDER BY SUM(sal);

IN OperatorSQL> SELECT	empno, ename, sal, mgr  2  FROM 	emp  3  WHERE	mgr IN (7902, 7566, 7788);

SQL>  SELECT	  empno, hiredate,    2	MONTHS_BETWEEN(SYSDATE, hiredate) TENURE,   3	ADD_MONTHS(hiredate, 6) REVIEW,   4	NEXT_DAY(hiredate, 'FRIDAY'), LAST_DAY(hiredate)   5  FROM	emp   6  WHERE	MONTHS_BETWEEN (SYSDATE, hiredate)<200;

SQL> SELECT	e.ename, d.deptno, d.dname  2  FROM	emp e, dept d  3  WHERE	e.deptno(+) = d.deptno  4  ORDER BY	e.deptno;

SQL> SELECT worker.ename||' works for '||manager.ename  2  FROM 	emp worker, emp manager  3  WHERE 	worker.mgr = manager.empno;

SQL> SELECT ename  2  FROM   emp  3  WHERE  sal >   4			(SELECT sal  5			   FROM   emp  6			   WHERE  empno=7566);

SQL> SELECT   ename, job  2  FROM	 emp  3  WHERE	job =   4			(SELECT	  job  5			 	FROM	 	emp  6				WHERE		empno = 7369)  7  AND	  sal >   8			(SELECT	  sal  9			FROM	emp  10			WHERE	empno = 7876);

Compartilhar este post


Link para o post
Compartilhar em outros sites

SQL> SELECT	job, SUM(sal) PAYROLL  2  FROM emp  3  WHERE job NOT LIKE 'SALES%'  4  GROUP BY job  5  HAVING SUM(sal)>5000  6  ORDER BY SUM(sal);
IN OperatorSQL> SELECT	empno, ename, sal, mgr  2  FROM 	emp  3  WHERE	mgr IN (7902, 7566, 7788);
SQL>  SELECT	  empno, hiredate,    2	MONTHS_BETWEEN(SYSDATE, hiredate) TENURE,   3	ADD_MONTHS(hiredate, 6) REVIEW,   4	NEXT_DAY(hiredate, 'FRIDAY'), LAST_DAY(hiredate)   5  FROM	emp   6  WHERE	MONTHS_BETWEEN (SYSDATE, hiredate)<200;
SQL> SELECT	e.ename, d.deptno, d.dname  2  FROM	emp e, dept d  3  WHERE	e.deptno(+) = d.deptno  4  ORDER BY	e.deptno;
SQL> SELECT worker.ename||' works for '||manager.ename  2  FROM 	emp worker, emp manager  3  WHERE 	worker.mgr = manager.empno;
SQL> SELECT ename  2  FROM   emp  3  WHERE  sal >   4			(SELECT sal  5			   FROM   emp  6			   WHERE  empno=7566);
SQL> SELECT   ename, job  2  FROM	 emp  3  WHERE	job =   4			(SELECT	  job  5			 	FROM	 	emp  6				WHERE		empno = 7369)  7  AND	  sal >   8			(SELECT	  sal  9			FROM	emp  10			WHERE	empno = 7876);
Nenhuma deu certo aqui , mesmo modificando os dados.Eu tenho exemplos assim ( de outro banco ) , se pudesse transformar esses que você fez , tipo os abaixo.O código, nome e o número de consultas marcadas entre 14/05 e 20/05 de cada médico no setor 6. select consulta.cod_med, nome, count (*)from consulta, medicowhere consulta.cod_med = medico.cod_med and to_char(data,'dd/mm') between '14/05' and '20/05' and setor = '6'group by consulta.cod_med, nome;O nome e o código de todo médico obstetra. select nome, cod_medfrom Medicowhere cod_med in ( select cod_med from Med_Espec where cod_esp in ( select cod_espec from Especialidade where especialidade = 'Obstetrícia' ));

Compartilhar este post


Link para o post
Compartilhar em outros sites

select consulta.cod_med, nome, count (*)from consulta, medicowhere consulta.cod_med = medico.cod_med andto_char(data,'dd/mm') between '14/05' and '20/05' and setor = '6'group by consulta.cod_med, nome;

O cod_med você especificou de qual banco que é. Especifique tb o nome e o count(*) de que tabela.

select nome, cod_medfrom Medicowhere cod_med in( select cod_medfrom Med_Especwhere cod_esp in( select cod_especfrom Especialidadewhere especialidade = 'Obstetrícia' ));

Na tabela MedEspec você usa o cod_espNa tabela Especialidade você usa o cod_especEles realmente tem o nome diferente??Tem certeza que esta cadastrado Obstetrícia???Não é Obstetra?? E tem o acento mesmo??

Compartilhar este post


Link para o post
Compartilhar em outros sites

select consulta.cod_med, nome, count (*)from consulta, medicowhere consulta.cod_med = medico.cod_med andto_char(data,'dd/mm') between '14/05' and '20/05' and setor = '6'group by consulta.cod_med, nome;

O cod_med você especificou de qual banco que é. Especifique tb o nome e o count(*) de que tabela.

select nome, cod_medfrom Medicowhere cod_med in( select cod_medfrom Med_Especwhere cod_esp in( select cod_especfrom Especialidadewhere especialidade = 'Obstetrícia' ));

Na tabela MedEspec você usa o cod_espNa tabela Especialidade você usa o cod_especEles realmente tem o nome diferente??Tem certeza que esta cadastrado Obstetrícia???Não é Obstetra?? E tem o acento mesmo??
Isso não só exemplos de como tenho que fazer (linguagem) , tipo nos seus exemplos você usou ( Job , worker' works for '||manager ) , isso eu não entendi e tb não funciono aqui no banco.. Consultas devem conter aninhamento somente a cláusula exists ,in ou any);. Consultas devem conter a claúsula group by;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Melhor dar uma olhada em livros ou apostilas. Segue uma página muito boa de oracle, onde tem vários materiais para suas dúvidas.www.profissionaloracle.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.