none
Como puedo insertar en el campo de una tabla el resultado de un select? RRS feed

  • Pregunta

  • Intente con el siguiente código, pero no me da resultado. 

    create or replace function valor () returns trigger

    as 
    $Body$

     declare 
             valor integer := 0;

      begin 

    select valor = (n1 + n2 + n3 + n4 + examen)/5 from notas;

    insert into notas(nf) values(valor);


      end;
    $Body$
    Language plpgsql volatile 

          
    domingo, 14 de octubre de 2018 23:53

Respuestas

  • Hola Many360:

    Este es un foro de Sql Server no de postgree Sql.

    Aunque la sintaxis se base en un standard, lo que has puesto es un poco extraño, al menos para mi.

    Si la tabla se llama notas y tiene al menos 6 columnas porque las mencionas en la select, parece normal, que no puedas insertar en ella misma solo 1 columna.

    Además de que la lógica, me dice que no querrás obtener la media de todas las notas de todos los "estudiantes", para ponerle de nota media a un solo registro la de todos.

    Hazte las siguientes preguntas.

    ¿De que tabla saco las notas anteriores, para cada usuario que quiera cambiar?

    ¿De donde sale la nota del examen?

    ¿Donde quiero guardar la nota media?

    Si las tres preguntas son de la misma, tabla, tu sentencia no es una insercción sino update.

    Si son diferentes, y es una insert, entonces además de la nota, en la tabla a insertar tendré que tener un identificador de registro, para saber la nota a quien le corresponde.

    Espero te ayude, no obstante, te recomiendo que utilices los foros de postgree en castellano para poder solucionar tu consulta. Te pongo 3 links, de sitios donde la ayuda puede ser más eficaz.

    https://www.lawebdelprogramador.com/foros/PostgreSQL/index1.html

    https://www.postgresql.org/message-id/3e7daec105031112101682cff1%40mail.gmail.com

    https://www.meetup.com/es-ES/PostgreSQL-Espana/messages/boards/?_cookie-check=_tD7suK4HiVcBVax

    lunes, 15 de octubre de 2018 6:22

Todas las respuestas

  • Hola Many360:

    Este es un foro de Sql Server no de postgree Sql.

    Aunque la sintaxis se base en un standard, lo que has puesto es un poco extraño, al menos para mi.

    Si la tabla se llama notas y tiene al menos 6 columnas porque las mencionas en la select, parece normal, que no puedas insertar en ella misma solo 1 columna.

    Además de que la lógica, me dice que no querrás obtener la media de todas las notas de todos los "estudiantes", para ponerle de nota media a un solo registro la de todos.

    Hazte las siguientes preguntas.

    ¿De que tabla saco las notas anteriores, para cada usuario que quiera cambiar?

    ¿De donde sale la nota del examen?

    ¿Donde quiero guardar la nota media?

    Si las tres preguntas son de la misma, tabla, tu sentencia no es una insercción sino update.

    Si son diferentes, y es una insert, entonces además de la nota, en la tabla a insertar tendré que tener un identificador de registro, para saber la nota a quien le corresponde.

    Espero te ayude, no obstante, te recomiendo que utilices los foros de postgree en castellano para poder solucionar tu consulta. Te pongo 3 links, de sitios donde la ayuda puede ser más eficaz.

    https://www.lawebdelprogramador.com/foros/PostgreSQL/index1.html

    https://www.postgresql.org/message-id/3e7daec105031112101682cff1%40mail.gmail.com

    https://www.meetup.com/es-ES/PostgreSQL-Espana/messages/boards/?_cookie-check=_tD7suK4HiVcBVax

    lunes, 15 de octubre de 2018 6:22
  • Prueba esto

    INSERT INTO NOTAS(nf)
    SELECT (n1 + n2 + n3 + n4 + examen) / 5 FROM notas;

    Saludos.

    lunes, 15 de octubre de 2018 10:37