Referencia cruzada mysql

Bueno tengo la siguiente inquietud, tengo 3 tablas una

Datos

id_datos

Nombre

Apellidos

Tel

Otra tabla

Curso

id_curso

Área

Otra

Notas

id_notas

id_datos

id_curso

Nota

Bueno mi pregunta es

Si pepito tiene notas en química, física, matematicasect

Como hago para que queden así

____________________________________________________

Nombre estudiante l Matemáticas l Física l Español

Pepito Perez 3,5 2.0 3.0

Respuesta
1

He esperado a ver si alguien te contestaba, pero parece que no hay un método en mysql para hacer esto. Ese tipo de consultas no existe en SQL standard, es un plus que tienen algunas bbdd como access. Para hacerlo creo que no tienes mas remedio que hacerlo con código, por ejemplo creando una tabla temporal con los campos que necesites desde los valores de las asignaturas (ejemplo desde un SELECT DISTINCT área FROM curso) y luego ir rellenando los datos a partir de una consulta.

También puedes tener ya la tabla creada con 1 campo para cada área y solo hacer la segunda tarea.

En todo caso es algo laborioso, lo siento pero creo que no hay otra.

Suerte

Como tu dices no hay nada con relación a eso busque por toda la red y me encontré con algo que me ayudo, pero ahora tengo una duda mas como hago en UPDATE a esta tabla

este es el query que realize hasta que me dio

SELECT i.nombres,i.apellidos,SUM(if(a.codigo_area=01,nota,null)) As Biología,SUM(if(a.codigo_area=02,nota,null)) As Química,SUM(if(a.codigo_area=03,nota,null)) As Física,b.codigo_area FROM boletin1 As b inner join info_estudiante i on b.identificación=i.identificación
inner join curso c on c.identificación=i.identificación
inner join áreas a on a.codigo_area=b.codigo_area
where
b.id_ciclo=b.id_ciclo
GROUP BY i.identificación

osea a la tabla boletín

donde tengo la tengo estructurada de la siguiente forma.

id_boletin

codigo_area

identificación

id_curso

id_ciclo

nota

puesto

como hago el update teniendo en cuenta que aquí se registran los datos de la siguiente forma

i_boletin codigo_area identificación id_curso id_ciclo nota puesto

0001 01 123456789 1 VI

0001 02 123456789 1 VI

0001 03 123456789 1 VI

los datos que quiero actualizar son nota ya que nota hace referencia a un codigo_area por ejemplo 01 corresponde a Biología , agradezco una orientacion para yo realizar la sentencia mil gracias por tu respuesta

Mas que un UPDATE creo que lo que debes hacer es un INSERT INTO boletín (i_boletin,codigo_area, identificación, id_curso, id_ciclo, nota) SELECT '0001', a.codigo_area, .....etc.

Para ir almacenando todos los datos en cada boletín.

Aunque quizás no te haya entendido bien, no se si te sirve esto de algo.

es que yo llamo los datos de mis tablas en un select y desde ese select realizar el update a mi tabla boletín al registro nota de esta tabla, espero haberme explicado

creo que no se puede hacer un UPDATE sobre una consulta de varias tablas con GROUP BY.

Por eso te decía que puedes guardar los datos de ese SELECT en una tabla (tmp) con un INSERT y luego ya puedes hacer un UPDATE del INNER JOIN de esa tabla con boletin1.

UPDATE boletin1 INNER JOIN tmp ON ..........(todos los campos que hagan falta).................... SET boletín 1.notas = tmp.notas

No se me ocurre otra forma mejor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas