SQL - Ayuda con consulta SQL

 
Vista:

Ayuda con consulta SQL

Publicado por Juan (1 intervención) el 12/05/2015 12:35:28
Buenos días normalmente no trabajo con consultas de SQL pero me he topado con un trabajo que necesita una consulta y estoy muy verde a ver si me podéis ayudar.
Tengo una tabla T1, con dos columnas C1 y C2 en estas columnas hay números y pueden estar repetidos.
ejemplor:

C1 -->10 -->11 -->12 -->10 -->11 -->14
C2 -->8 -->8 -->10 -->2 -->10 -->2

Necesito encontrar el número de la columna C1 que tenga como valor en la columna C2 8 y 2. En este caso del ejemplo la consulta debería devolver 10.
¿Me he explicado? ¿Alguien me puede ayudar?

Gracias de antemano
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 con consulta SQL

Publicado por leonardo_josue (1173 intervenciones) el 13/05/2015 16:49:59
Hola Juan:

En realidad hay muchas formas de obtener lo que quieres... puedes hacerlo con IN, con EXISTS, agrupando y utilizando COUNT, con LEFT JOIN's... Una de las maneras más "sencillas" pero con peor desempeño sería utilizando SUBCONSULTAS con EXISTS...

Supongamos que tienes tu tabla así:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT * FROM tabla;
+------+------+------+
| id   | C1   | C2   |
+------+------+------+
|    1 |   10 |    8 |
|    2 |   11 |    8 |
|    3 |   12 |   10 |
|    4 |   10 |    2 |
|    5 |   11 |   10 |
|    6 |   14 |    2 |
+------+------+------+
6 rows in set (0.00 sec)

Lo que puedes hacer es poner dos condiciones con EXISTS, una donde preguntes si existe un registro CON EL MISMO VALOR EN LA COLUMNA C1 pero que en la columna C2 tenga un valor de 2... y después hacer lo mismo con la variable C2 = 8, es decir algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> SELECT * FROM tabla T1
    -> WHERE
    ->   EXISTS( SELECT *
    ->           FROM tabla T2 WHERE T1.C1 = T2.C1 AND T2.C2 = 2) AND
    ->   EXISTS( SELECT *
    ->           FROM tabla T3 WHERE T1.C1 = T3.C1 AND T3.C2 = 8);
+------+------+------+
| id   | C1   | C2   |
+------+------+------+
|    1 |   10 |    8 |
|    4 |   10 |    2 |
+------+------+------+
2 rows in set (0.00 sec)

Insisto en que esta consulta es una de las peores formas de hacer lo que quieres... me gustaría que investigaras un poco y trataras de hacer otras consultas, por ejemplo agrupando y utilizando COUNT y HAVING... te servirá como práctica ya que dices que estás "muy verde" con esto de las consultas.

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