MySQL - Insertar nueva fila en determinados casos

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 8 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar nueva fila en determinados casos

Publicado por david (3 intervenciones) el 13/07/2018 14:21:04
Buenas tardes.

A ver si me podéis ayudar, que estoy un poco perdido.

Tengo una tabla

FACT_HORAS_TRABAJADAS
horas
ID_EMPLEADO
ID_Dia
ID_Proyecto

Esta tabla tiene varios registros por ejemplo:
8
1
20180505
44


Tengo otra tabla

LU_DIA
ID_Dia
Dia_Semana
Festivo
ID_Mes
ID_Año

Lo que quiero es insertar un nuevo registro con id de proyecto 137 where mes = el que yo le diga )que viene a través de una transacción).
He probado con insert select pero en el select no puedo poner nada ya que no hay ningun registro con el proyecto 137
Insert con where no existe
etc...


¿Alguna idea? Muchas gracias¡¡
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar nueva fila en determinados casos

Publicado por leonardo_josue (414 intervenciones) el 13/07/2018 19:09:24
Hola David:

Vayamos por partes:

1
Lo que quiero es insertar un nuevo registro con id de proyecto 137 where mes = el que yo le diga

Primero, ¿en qué tabla quieres insertar el registro?

Segundo, no entiendo qué pretendes con el WHERE. Tal como lo mencionas, un INSERT no tiene condición WHERE, ya que este sirve para filtrar información que ya existe en una tabla. El INSERT-SELECT sirve sólo cuando quieres insertar en una tabla la información resultante de una consulta, pero esta información ya debe existir en la BD's O_o

Creo que tienes que tratar de explicarte un poco mejor para entender tu problema y tratar de darte una solución.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Insertar nueva fila en determinados casos

Publicado por David (3 intervenciones) el 13/07/2018 19:26:59
Buenas Leo y muchas gracias por responder.

Quiero insertar un nuevo registro en la tabla Fact_horas_trabajadas. Un registro con un ID_Proyecto nuevo para cada empleado pero solo en Agosto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar nueva fila en determinados casos

Publicado por leonardo_josue (414 intervenciones) el 13/07/2018 22:13:27
Hola de nuevo David:

1
2
Quiero insertar un nuevo registro en la tabla Fact_horas_trabajadas.
Un registro con un ID_Proyecto nuevo para cada empleado pero solo en Agosto

Insertar un registro es muy distinto a insertar un registro para cada empleado. En el primero de los casos, es un insert simple, en el segundo, si quieres insertar un registro por cada empleado entonces primero tienes que decirnos cómo saber el número de empleados que tienes. No trates de ahorrar palabras en tu post's... entre más detalles nos puedas dar, será más factible que podamos ayudarte, pero si no te tomas el tiempo suficiente para explicarte, será muy difícil hacerlo...

Voy a poner un ejemplo, pero no sé si es lo que necesitas. Supongamos que tenemos estas dos tablas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> select * from clientes;
+------------+----------------+
| id_cliente | nombre_cliente |
+------------+----------------+
|          1 | uno            |
|          2 | dos            |
|          3 | tres           |
+------------+----------------+
3 rows in set (0.00 sec)
 
mysql> select * from tabla;
+----------+------------+------+
| id_tabla | id_cliente | mes  |
+----------+------------+------+
|        1 |          1 |    6 |
|        2 |          2 |    6 |
|        3 |          3 |    6 |
|        4 |          1 |    7 |
|        5 |          2 |    7 |
|        6 |          3 |    7 |
+----------+------------+------+
6 rows in set (0.00 sec)

Si queremos insertar en TABLA un registro por cada CLIENTE pero con el mes de agosto (8), entonces hacemos algo así:

Primero, obtenemos una consulta con los datos que queremos insertar. En este caso nos basamos en la tabla de clientes, y el valor del MES lo ponemos como una constante, es decir, algo así:

1
2
3
4
5
6
7
8
9
mysql> select nul id, id_cliente, 8 mes from clientes;
+------+------------+-----+
| id    | id_cliente | mes |
+------+------------+-----+
| NULL |          1 |   8 |
| NULL |          2 |   8 |
| NULL |          3 |   8 |
+------+------------+-----+
3 rows in set (0.00 sec)

Entonces, en este caso se insertarían TRES REGISTROS (el primer campo lo pongo como NULL porque estoy suponiendo un campo autoincremental.

Entonces, el INSERT quedaría así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mysql> insert into tabla select null, id_cliente, 8 mes from clientes;
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0
 
mysql> select * from tabla;
+----------+------------+------+
| id_tabla | id_cliente | mes  |
+----------+------------+------+
|        1 |          1 |    6 |
|        2 |          2 |    6 |
|        3 |          3 |    6 |
|        4 |          1 |    7 |
|        5 |          2 |    7 |
|        6 |          3 |    7 |
|        7 |          1 |    8 |
|        8 |          2 |    8 |
|        9 |          3 |    8 |
+----------+------------+------+
9 rows in set (0.00 sec)

dale un vistazo a ver si esto te puede servir para lo que quieres.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 4
Ha aumentado su posición en 8 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Insertar nueva fila en determinados casos

Publicado por david (3 intervenciones) el 16/07/2018 08:21:37
Buenas Leo.

Muchas gracias, eso es lo que buscaba.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar