Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

comandos SQL

Estas en el tema de comandos SQL en el foro de Mysql en Foros del Web. Hola a todos, tengo que hacer varios ejercicios de SQL y ya tengo un cacao mental increible. tengo las siguientes tablas: PERSONAL ---------------- cod_centro dni ...
  #1 (permalink)  
Antiguo 26/02/2015, 11:57
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años
Puntos: 2
comandos SQL

Hola a todos, tengo que hacer varios ejercicios de SQL y ya tengo un cacao mental increible.

tengo las siguientes tablas:

PERSONAL
----------------
cod_centro
dni
apellidos
funcion
salario

PROFESORES
------------------------
cod_centro
dni
apellidos
especialidad

CENTROS
----------------
cod_centro
tipo_centro
nombre
direccion
telefono
num_plazas


tengo que realizar estos a partados:

7. Sumar 50 al número de plazas de la tabla centros, para aquellos centros que tengan profesores de la especialidad informatica.
8. Eliminar de la tabla centros aquellos centros que no tengan profesores de la especialidad informática.
9. Eliminar de la tabla personal aquellas filas cuyo código de centro no exista en la tabla centros.

Apartado 7: he intentado hacer esto, pero el problema es que me da error, porque no me entero bien como hacerlo cuando las tablas están referenciadas.

UPDATE centros SET num_plazas=num_plazas+50 WHERE cod_centro=profesores.centro AND especialidad="INFORMATICA";

Apartado 9: hice esto que también me dio error : delete cod_centro from personal,centros where personal.cod_centro=centros.cod_centro;

hechenme una mano ando apurada
  #2 (permalink)  
Antiguo 26/02/2015, 12:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: comandos SQL

7. Sumar 50 al número de plazas de la tabla centros, para aquellos centros que tengan profesores de la especialidad informatica.

Código SQL:
Ver original
  1. UPDATE CENTROS
  2. SET
  3. num_plazas=num_plazas+50
  4. FROM
  5. (
  6. SELECT cod_centro FROM centros AS t1
  7. LEFT JOIN profesores AS t2 ON (t1.cod_centro=t2.cod_centro)
  8. WHERE t2.especialidad = 'informatica'
  9. ) AS completa
  10. WHERE centros.cod_centro=completa.cod_centro

Eliminar de la tabla centros aquellos centros que no tengan profesores de la especialidad informática.

Código SQL:
Ver original
  1. DELETE FROM centros WHERE cod_centro NOT IN (SELECT cod_centro FROM centros AS t1
  2. LEFT JOIN profesores AS t2 ON (t1.cod_centro=t2.cod_centro)
  3. WHERE t2.especialidad = 'informatica'
  4. )

9. Eliminar de la tabla personal aquellas filas cuyo código de centro no exista en la tabla centros.

Código SQL:
Ver original
  1. DELETE FROM centros WHERE cod_centro NOT IN (SELECT cod_centro FROM centros AS t1
  2. INNER JOIN personal AS t2 ON (t1.cod_centro=t2.cod_centro)

Algo mas???? un examen, reporte, trabajo de fin de curso???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 27/02/2015, 02:40
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años
Puntos: 2
Respuesta: comandos SQL

Gracias por responder Libras, pero tengo una duda yo.

¿Se podrían hacer sin JOIN estos ejercicios? es que el comando JOIN no me entero bien y creo que se podían hacer sin JOIN

Edito: es para una actividad. Esto no lo entiendo muy bien:

DELETE FROM centros WHERE cod_centro NOT IN (SELECT cod_centro FROM centros AS t1
INNER JOIN personal AS t2 ON (t1.cod_centro=t2.cod_centro).

Aquí se supone que lo que tengo que borrar está en la tabla personal entonces por que se pone "DELETE FROM centros?

Gracias.

Última edición por Juny18; 27/02/2015 a las 03:21
  #4 (permalink)  
Antiguo 27/02/2015, 07:58
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años
Puntos: 2
Respuesta: comandos SQL

Cita:
Iniciado por Libras Ver Mensaje
7. Sumar 50 al número de plazas de la tabla centros, para aquellos centros que tengan profesores de la especialidad informatica.

Código SQL:
Ver original
  1. UPDATE CENTROS
  2. SET
  3. num_plazas=num_plazas+50
  4. FROM
  5. (
  6. SELECT cod_centro FROM centros AS t1
  7. LEFT JOIN profesores AS t2 ON (t1.cod_centro=t2.cod_centro)
  8. WHERE t2.especialidad = 'informatica'
  9. ) AS completa
  10. WHERE centros.cod_centro=completa.cod_centro

Aqui me sale un error de sintaxis de sql: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM
(
SELECT cod_centro FROM centros AS t1
LEFT JOIN profesores AS t2 ON (t1.co' at line 4


Eliminar de la tabla centros aquellos centros que no tengan profesores de la especialidad informática.

Código SQL:
Ver original
  1. DELETE FROM centros WHERE cod_centro NOT IN (SELECT cod_centro FROM centros AS t1
  2. LEFT JOIN profesores AS t2 ON (t1.cod_centro=t2.cod_centro)
  3. WHERE t2.especialidad = 'informatica'
  4. )

Aqui me sale este error: ERROR 1052 (23000): Column 'cod_centro' in field list is ambiguous

9. Eliminar de la tabla personal aquellas filas cuyo código de centro no exista en la tabla centros.

Código SQL:
Ver original
  1. DELETE FROM centros WHERE cod_centro NOT IN (SELECT cod_centro FROM centros AS t1
  2. INNER JOIN personal AS t2 ON (t1.cod_centro=t2.cod_centro)

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2


Algo mas???? un examen, reporte, trabajo de fin de curso???

Última edición por Juny18; 27/02/2015 a las 08:15
  #5 (permalink)  
Antiguo 27/02/2015, 08:30
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: comandos SQL

las consultas estan en SQL server, tienes que cambiarlas para la sintaxis de mysql(no es mi fuerte mysql), sobre los errores algunos son de que me falto poner tabla.campo para poder hacer las relaciones......y otros que hice copy paste :P hehehehe
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: comandos, sql, tabla, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:19.