SQL - Ayuda URGENTE please

 
Vista:
sin imagen de perfil
Val: 20
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Ayuda URGENTE please

Publicado por Ale (11 intervenciones) el 24/11/2017 00:29:15
Hola buenas necesito vuestra genial ayuda!!, estoy usando SQLPLUS con ORACLE y quiero hacer una select que involucra dos tablas tienen un campo con el mismo valor.

He hecho un dibujo que creo que lo explica mejor que con palabras:

IMG_20171123_172610_986

El problema lo tengo con la resta de la tablaB, como hago para que me reste la hora del tipo 1 con la hora del tipo 2 en una misma sentencia a la vez que hago que esas tablas se relacionen.

ESTOY PERDIDO!!

Cualquier ayuda la agradezco y si no os queda claro y necesitáis mas detalles pedírmelo e intento ser mas preciso.

De antemano muchísimas gracias a todos.
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda URGENTE please

Publicado por leonardo_josue (1173 intervenciones) el 24/11/2017 16:28:26
Hola Ale:

En realidad, tienes muchas formas de obtener lo que quieres, la más "simple", pero no la mejor, sería utilizando subconsultas, Supongamos que tienes estas tablas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> SELECT * FROM tabla_a;
+------+-------------+
| id   | descripcion |
+------+-------------+
|  001 | uno         |
|  002 | dos         |
|  003 | tres        |
+------+-------------+
3 rows in set (0.00 sec)
 
mysql> SELECT * FROM tabla_b;
+------+----------+------+
| id   | hora     | tipo |
+------+----------+------+
|  001 | 12:00:00 |    1 |
|  001 | 12:05:00 |    2 |
|  002 | 12:00:00 |    1 |
|  003 | 12:00:00 |    2 |
+------+----------+------+
4 rows in set (0.00 sec)

Entonces, utilizando subconsultas podrías recuperar la hora para cada tipo de manera independiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
mysql> SELECT
    ->   TA.id,
    ->   TA.descripcion,
    ->   ( SELECT hora
    ->     FROM tabla_b TB
    ->     WHERE
    ->       TB.id = TA.id AND
    ->       TB.tipo = 1
    ->   ) Hora_T1,
    ->   ( SELECT hora
    ->     FROM tabla_b TB
    ->     WHERE
    ->       TB.id = TA.id AND
    ->       TB.tipo = 2
    ->   ) Hora_T2,
    ->   TIMEDIFF(( SELECT hora
    ->              FROM tabla_b TB
    ->              WHERE
    ->                TB.id = TA.id AND
    ->                TB.tipo = 2
    ->            ),
    ->            ( SELECT hora
    ->              FROM tabla_b TB
    ->              WHERE
    ->                TB.id = TA.id AND
    ->                TB.tipo = 1
    ->            )
    ->           ) Diferencia
    -> FROM tabla_a TA;
+------+-------------+----------+----------+------------+
| id   | descripcion | Hora_T1  | Hora_T2  | Diferencia |
+------+-------------+----------+----------+------------+
|  001 | uno         | 12:00:00 | 12:05:00 | 00:05:00   |
|  002 | dos         | 12:00:00 | NULL     | NULL       |
|  003 | tres        | NULL     | 12:00:00 | NULL       |
+------+-------------+----------+----------+------------+
3 rows in set (0.01 sec)

Aquí puedes ver algunos problemas, si en tu tabla B no hay los dos tipos que mencionas, la diferencia te arrojará un valor null, además, hay otro problema, y sería que existieran más de un tipo 1 o un tipo 2 para un mismo identificador. en ese caso las subconsultas marcarían error. Debes hacer todas esas consideraciones dependiendo de cómo tengas guardada tu informació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
2
Comentar
sin imagen de perfil
Val: 20
Ha disminuido 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Ayuda URGENTE please

Publicado por Ale (11 intervenciones) el 24/11/2017 17:53:16
PERFECTO!!! MUCHAS GRACIAS!!

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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda URGENTE please

Publicado por Isaias (1921 intervenciones) el 24/11/2017 19:33:32
Mi admiracion Leo, cuanta buena actitud, felicidades
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