Ir a contenido

¿alguien que sepa de base de datos que me quiera echar una mano?


  • Este tema esta bloqueado Este tema esta bloqueado
42 respuestas en este tema
  • javivi-2007
  • Provincia:Malaga


Jo......

Siempre he pensado que el planeta esta lleno de raritos y yo era de los menos raritos dentro de estos.

Lamentablemente me acabo de dar cuenta de que debo ser de los mas raritos de todos porque casi tengo un orgasmo leyendo las preguntas y otro al leer las respuestas...... Que recuerdos...

Asisti a un curso de sql y bases de datos relacionales hace mas de 25 años y me encanto el tema. Pretendia haberme ganado la vida con esto pero con la magnifica oferta laboral de este pais acabe de profesor de ofimatica y se me fue olvidando todo (o eso creia). Lo unico bueno es que con poco mas de 20 años acabe dando clases a chicas adolescentes con lo que eso conlleva, asi que por lo menos me lo pase bien.

Con lo poco que recuerdo y basandome en lo escrito por el sabio azertimes me surgen las siguientes dudas:

 

- Seleccionar apellidos y nombre de cada profesor, el de su especialidad, el de su centro asignado, y el número de plazas del centro. El resultado se ordenará, alfabéticamente, por los apellidos del profesor.
 
¿No aparece el campo nombre o numemp en la tabla profesores?
¿No aparece el campo dni en la tabla empleados?
No veo como relacionar la tabla profesores con la tabla empleados ya que no contienen ningun campo comun, no me parece logico.
 
A mi me da que hay algun error de diseño en las tablas. Aunque ya digo que hace mas de 25 años que no repaso el tema.
en todo caso sigo el hilo a ver si puedo echar una mano. Gracias a los dos, me habeis alegrado la mañana. Espero que no os moleste mi intromision.
 
Un saludo

Escrito 06 febrero 2017 - 10:25        Editado por javivi-2007, 06 febrero 2017 - 10:26.




  • lastMonkey
  • Provincia:Santa Cruz de Tenerife


Siento haber visto tarde esto... y hay poco tiempo...
 

Lo primero, he subido el esquema que ha puesto el compañero a db4free.net, ahí he creado la base de datos MySQL con el que trabajar, con el que cualquiera podría conectarse y probar sus consultas.

 

Tiene intefaz web pero va muy lenta, me he bajado el MySQL Workbench y configurado de la siguiente forma:

 

 

9f1dd78bfe374b629dd638206d0ca30b.jpeg

 

 

DB / Esquema: h2mdb
Usuario: lastmonkey
Pwd: h2mgaldor

 

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

 

 

He hecho algunas consultas, me faltan las finales, intentaré a la tarde / noche hacerlas
 

1) Seleccionar el nombre y sueldo de cada trabajador (personal) perteneciente a la función administrativo o conserje, que gane más de 1500 €.
SELECT apellidos, salario FROM personal ORDER BY salario asc LIMIT 3;
 
2) Seleccionar todos los datos de los trabajadores (personal) que tienen los tres sueldos más bajos.
SELECT * FROM personal ORDER BY salario asc LIMIT 3;
 
3) Seleccionar apellidos y nombre de cada profesor, el de su especialidad, el de su centro asignado, y el número de plazas del centro. El resultado se ordenará, alfabéticamente, por los apellidos del profesor.
SELECT p.apellidos, p.especialidad, c.nombre, c.num_plazas FROM profesores p, centros c WHERE p.cod_centro=  c.cod_centro order by p.apellidos;
 
4) Seleccionar el sueldo medio de los trabajadores (personal) de cada centro. Se incluirá el nombre del centro. No deben aparecer en el resultado los sueldos medios menores de 1800 €.
 
SELECT x.cod_centro, x.nombre, x.salario  FROM (
SELECT p.*, c.cod_centro as c_cod_centro, c.nombre FROM personal p, centros c WHERE p.cod_centro=  c.cod_centro 
) x 
GROUP BY x.cod_centro HAVING AVG(x.salario) > 1799
 
 
SELECT AVG(p.salario) FROM personal p WHERE p.cod_centro=  10
 
10 -> 1.400
15 -> 1.800 / CP Los Danzantes
22 -> 1.616
45 -> 1.750
50 -> *
60 -> *
 
5) Seleccionar todos los datos de los centros, junto a los datos de sus profesores. Deben aparecer los datos de todos los centros, aunque no tengan profesores asignados.
SELECT * 
FROM centros c LEFT JOIN profesores p ON p.cod_centro= c.cod_centro
ORDER BY c.nombre, p.apellidos;
 
-- Ordenado por nombre de centro y nombre de profesor.

 

 

Intentaré lugo acabarlas... pero al menos el resto también puede trabajar contra la DB ;)

  • Valorado por galdor y ovatha

Escrito 06 febrero 2017 - 17:42

yyg5mz-2.png Cuando tu venta consigue 112 manitas y no bajas el precio  :fp:


  • galdor
  • Provincia:Malaga


lo primero muuuuchas gracias a todos lo que me estais echando una mano :)

casi tengo acabados los ejercicios me quedan solo 2 de los 10 que tenia.

Azertime,veo que en el ejercicio 4 pide que no aparezcan resultados menores de 1800 y aunque pones en ua de las sentencias >1799 luego en los resultados veo que aparecen los centros con menos de esa cantidad..

no podria ser la sentencia ..

SELECT
Avg(personal.salario) AS 'salario_medio',
centros.nombre,
centros.nombre,
personal.cod_centro
FROM
personal
INNER JOIN centros ON personal.cod_centro = centros.cod_centro
WHERE
'salario_medio' >1800
GROUP BY
centros.cod_centro
 

lo que pasa es que no me aparece ningun centro sino los campos en null...

pd:me da error con la contraseña de la pagina..que raro


Escrito 06 febrero 2017 - 17:58        Editado por galdor, 06 febrero 2017 - 18:10.


  • javivi-2007
  • Provincia:Malaga


Pues si que estoy perdido.... pero a mi me sigue pareciendo que algo no cuadra...

 

1) Seleccionar el nombre y sueldo de cada trabajador (personal) perteneciente a la función administrativo o conserje, que gane más de 1500 €.
SELECT apellidos, salario FROM personal ORDER BY salario asc LIMIT 3;
 
¿piden el nombre y tu le das los apellidos?
 
 O esta mal el enunciado o mal diseñadas las tablas. Segun mi humilde opinion....
 
O esta, la 3:
SELECT p.apellidos, p.especialidad, c.nombre, c.num_plazas FROM profesores p, centros c WHERE p.cod_centro=  c.cod_centro order by p.apellidos;
 
El c.nombre no es el nombre del profesor, sino el nombre del centro que no lo piden en ningun momento.
 
Y en la 3 otra vez:
 
- Seleccionar apellidos y nombre de cada profesor, el de su especialidad, el de su centro asignado, y el número de plazas del centro. El resultado se ordenará, alfabéticamente, por los apellidos del profesor.
 
Si alguien es capaz de sacar el nombre y apellidos de cada profesor teniendo en cuenta que no veo ninguna tabla con esos datos (ni juntos ni relacionados por algun campo comun, dni por ejemplo) prometo no molestar mas...
El que ha planteado esos ejercicios los ha hecho muy rapido y sin pensarlos mucho, me da la impresion...
  • Valorado por galdor

Escrito 06 febrero 2017 - 18:33        Editado por javivi-2007, 06 febrero 2017 - 18:59.


  • azertimes
  • Provincia:Granada


 

Pues si que estoy perdido.... pero a mi me sigue pareciendo que algo no cuadra...

 

1) Seleccionar el nombre y sueldo de cada trabajador (personal) perteneciente a la función administrativo o conserje, que gane más de 1500 €.
SELECT apellidos, salario FROM personal ORDER BY salario asc LIMIT 3;
 
¿piden el nombre y tu le das los apellidos?
 
 O esta mal el enunciado o mal diseñadas las tablas. Segun mi humilde opinion....
 
O esta, la 3:
SELECT p.apellidos, p.especialidad, c.nombre, c.num_plazas FROM profesores p, centros c WHERE p.cod_centro=  c.cod_centro order by p.apellidos;
 
El c.nombre no es el nombre del profesor, sino el nombre del centro que no lo piden en ningun momento.
 
Y en la 3 otra vez:
 
- Seleccionar apellidos y nombre de cada profesor, el de su especialidad, el de su centro asignado, y el número de plazas del centro. El resultado se ordenará, alfabéticamente, por los apellidos del profesor.
 
Si alguien es capaz de sacar el nombre y apellidos de cada profesor teniendo en cuenta que no veo ninguna tabla con esos datos (ni juntos ni relacionados por algun campo comun, dni por ejemplo) prometo no molestar mas...
El que ha planteado esos ejercicios los ha hecho muy rapido y sin pensarlos mucho, me da la impresion...

 

 

Es que me da que en la tabla profesores cuando ha puesto el campo apellidos, si os fijais también vienen los nombres. En los inserts se ve:

 

INSERT INTO `profesores` VALUES ('10', '2222222', 'Martínez Salas, Fernando', 'INFORMÁTICA');

 

Saludos,

  • Valorado por galdor

Escrito 06 febrero 2017 - 19:12

Mis artículos en ventaKVM 3€ 

 

 

 

 


  • lastMonkey
  • Provincia:Santa Cruz de Tenerife


Cambie antes la contraseña pero no aplicó el cambio hasta ahora que lo he confirmado. Probad otra vez porfavor.

Cuando llegue a casa intento seguir.

Escrito 06 febrero 2017 - 19:14

yyg5mz-2.png Cuando tu venta consigue 112 manitas y no bajas el precio  :fp:


  • galdor
  • Provincia:Malaga


 

Pues si que estoy perdido.... pero a mi me sigue pareciendo que algo no cuadra...

 

1) Seleccionar el nombre y sueldo de cada trabajador (personal) perteneciente a la función administrativo o conserje, que gane más de 1500 €.
SELECT apellidos, salario FROM personal ORDER BY salario asc LIMIT 3;
 
¿piden el nombre y tu le das los apellidos?
 
 O esta mal el enunciado o mal diseñadas las tablas. Segun mi humilde opinion....
 
O esta, la 3:
SELECT p.apellidos, p.especialidad, c.nombre, c.num_plazas FROM profesores p, centros c WHERE p.cod_centro=  c.cod_centro order by p.apellidos;
 
El c.nombre no es el nombre del profesor, sino el nombre del centro que no lo piden en ningun momento.
 
Y en la 3 otra vez:
 
- Seleccionar apellidos y nombre de cada profesor, el de su especialidad, el de su centro asignado, y el número de plazas del centro. El resultado se ordenará, alfabéticamente, por los apellidos del profesor.
 
Si alguien es capaz de sacar el nombre y apellidos de cada profesor teniendo en cuenta que no veo ninguna tabla con esos datos (ni juntos ni relacionados por algun campo comun, dni por ejemplo) prometo no molestar mas...
El que ha planteado esos ejercicios los ha hecho muy rapido y sin pensarlos mucho, me da la impresion...

 

es que no hay un campo nombre sino uno que se llama apellidos y ahi está eñ nombre y apellidos..un tanto extrañpo


Escrito 06 febrero 2017 - 19:16


  • lastMonkey
  • Provincia:Santa Cruz de Tenerife


Que más da si el nombre está en uno o tres campos? No cambiaría nada la lógica de resolución de los ejercicios...

Escrito 06 febrero 2017 - 19:24

yyg5mz-2.png Cuando tu venta consigue 112 manitas y no bajas el precio  :fp:


  • galdor
  • Provincia:Malaga


ya me va el pass de la pagina..voy a ver xD


Escrito 06 febrero 2017 - 19:58


  • lastMonkey
  • Provincia:Santa Cruz de Tenerife


ya me va el pass de la pagina..voy a ver xD

 

¿Cuáles ejercicios tienes aún pendientes?


Escrito 06 febrero 2017 - 21:08

yyg5mz-2.png Cuando tu venta consigue 112 manitas y no bajas el precio  :fp:


  • lastMonkey
  • Provincia:Santa Cruz de Tenerife


7) Seleccionar el número de administrativos y conserjes de la tabla personal.

 

select funcion, count(*) as `total` 
from personal  
WHERE funcion= 'ADMINISTRATIVO' or funcion= 'CONSERJE'
GROUP BY funcion;

Escrito 06 febrero 2017 - 22:57

yyg5mz-2.png Cuando tu venta consigue 112 manitas y no bajas el precio  :fp:


  • lastMonkey
  • Provincia:Santa Cruz de Tenerife


8) Utiliza subconsultas para seleccionar los nombres de los centros que tengan asignado algún profesor de informática y de matemáticas (ambos al mismo centro).

 

select * 
from centros c 
where (
(select count(*) from profesores p1 where p1.cod_centro= c.cod_centro and p1.especialidad= 'INFORMÁTICA') > 0 and 
    (select count(*) from profesores p2 where p2.cod_centro= c.cod_centro and p2.especialidad= 'MATEMÁTICAS') > 0
);
  • Valorado por galdor

Escrito 06 febrero 2017 - 23:11

yyg5mz-2.png Cuando tu venta consigue 112 manitas y no bajas el precio  :fp:


  • lastMonkey
  • Provincia:Santa Cruz de Tenerife


9) Utiliza subconsultas para seleccionar los nombres de los profesores asignados a un centro que tenga más de 1 administrativo.
 
 

select apellidos 
from profesores p 
where p.cod_centro in (
select s.cod_centro 
from personal s 
where s.funcion= 'ADMINISTRATIVO'
group by s.cod_centro
having count(*) > 1
);

10) Los nombres de todos los profesores, sin apellidos, junto al primer apellido

 

Para esteo como bien comentaban antes (error mio), si que es necesario tener los nombres de los profesores separados por columnas, por ejemplo: nombre, apellidouno, apellidodos.

 

 

Creo que está todo... toas las consulta las he testado en el esquema en la nube y dan bien.

 

Tener en cuenta que no hay una soloa forma de satisfacer una consulta, en ocasiones hay varias formas, más o menos optimas.

 

Y otra cuestión respecto de esto, y siento decirlo tan claramente, es que si no consigues "visualizar" estas consultas, si no logras ver y comprender cómo es la lógica para la resolucion de los problemas, pues de poco te va a servir tener los ejercicios resueltos.

 

Si esta es una entrega parcial (que tiene toda la pinta de serlo) te animo a que te pongas las pilas, si lo dejas para ultimo momento te verás superado.

 

Venga, espero haber contribuido un poco junto a los demás compis... ya nos cuentas cómo te ha ido. 

  • Valorado por galdor

Escrito 06 febrero 2017 - 23:29        Editado por lastMonkey, 06 febrero 2017 - 23:35.

yyg5mz-2.png Cuando tu venta consigue 112 manitas y no bajas el precio  :fp:


  • galdor
  • Provincia:Malaga


Ya está terminadap ...muchas gracias por todo.

La verdad es que me ha pillado el toro..

la semana que viene tengo el examen y me tengo que poner las pilas ,pero al menos tengo la tarea online hecha y manaña voy a la tarea presencial con algo aprendido...porque estaba pez del todo..


Escrito 07 febrero 2017 - 00:50


  • azertimes
  • Provincia:Granada


Ánimo, dale duro y verás como todo va bien!!


Escrito 07 febrero 2017 - 20:24

Mis artículos en ventaKVM 3€ 

 

 

 

 



0 usuario(s) estan leyendo este tema

0 miembros, 0 invitados, 0 usuarios anónimos