MySQL - Consulta sencilla

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

Consulta sencilla

Publicado por Carlos (3 intervenciones) el 05/11/2018 13:51:37
Hola y encantado de saludarles ! al grano:
Necesito mostrar que pilotos tienen mas podios que el piloto mas joven, es una consulta de una unica tabla, aqui va mi intento :
SELECT nombre, apellido FROM pilotos
WHERE numero_podios > (SELECT MAX(fecha_nacimiento) FROM pilotos);

si ejecuto la subconsulta obtengo al piloto mas joven, lo que no logro hacer es que me muestre a los pilotos que tienen mas podios que éste...
alguien que me ayude por favor?!
gracias de antebrazo ! :)
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

Consulta sencilla

Publicado por leonardo_josue (414 intervenciones) el 05/11/2018 21:34:57
Hola Carlos:

No nos pones datos de ejemplo ni nos dices cuál es la estructura de tu tabla, pero tratando de jugar al adivino, para obtener el número de podios del piloto más joven podrías hacerlo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mysql> SELECT * FROM tabla;
+------+--------+----------+------------------+---------------+
| id   | nombre | apellido | fecha_nacimiento | numero_podios |
+------+--------+----------+------------------+---------------+
|    1 | piloto | uno      | 1990-01-02       |            10 |
|    2 | piloto | dos      | 1991-03-30       |             3 |
|    3 | piloto | tres     | 1989-05-21       |             1 |
|    4 | piloto | cuatro   | 2000-07-17       |             5 |
|    5 | piloto | cinco    | 1999-03-09       |             6 |
+------+--------+----------+------------------+---------------+
5 rows in set (0.00 sec)
 
mysql> SELECT numero_podios
    -> FROM tabla
    -> WHERE fecha_nacimiento = (SELECT MAX(fecha_nacimiento) FROM tabla);
+---------------+
| numero_podios |
+---------------+
|             5 |
+---------------+
1 row in set (0.00 sec)


finalmente, utilizas esto para filtrar tu consulta, ya sea con una condición en el WHERE o haciendo un JOIN.

Haz la prueba y nos comentas.

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: 6
Ha disminuido su posición en 2 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta sencilla

Publicado por Carlos (3 intervenciones) el 05/11/2018 23:18:00
Leo ! tomo nota de la recomendación así que rectifico:

Pilotos


pilotos

yo creo que son dos subconsultas, una para identificar el piloto mas joven y otra para identificar que pilotos tienen mas podios que éste...
mi fallido intento:


SELECT nombre, apellido FROM pilotos
WHERE numero_podios > (SELECT (numero_podios) FROM Pilotos
WHERE (fecha_nacimiento)<(SELECT MAX(fecha_nacimiento) FROM Pilotos));

Comprobando la tabla veo q el mas joven es marc marquez y que hay 4 pilotos que tienen mas podios que el pero no lo puedo mostrar con esta consulta....
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

Consulta sencilla

Publicado por leonardo_josue (414 intervenciones) el 06/11/2018 16:47:12
Hola de nuevo Carlos:

Creo que te estás complicando de más y ni siguiera te tomaste el tiempo para estudiar con detenimiento lo que te puse de ejemplo.

Con esta tabla de datos:

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT * FROM tabla;
+------+--------+----------+------------------+---------------+
| id   | nombre | apellido | fecha_nacimiento | numero_podios |
+------+--------+----------+------------------+---------------+
|    1 | piloto | uno      | 1990-01-02       |            10 |
|    2 | piloto | dos      | 1991-03-30       |             3 |
|    3 | piloto | tres     | 1989-05-21       |             1 |
|    4 | piloto | cuatro   | 2000-07-17       |             5 |
|    5 | piloto | cinco    | 1999-03-09       |             6 |
+------+--------+----------+------------------+---------------+
5 rows in set (0.00 sec)

Para obtener el número de podios del piloto más joven, hacemos esto:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT numero_podios
    -> FROM tabla
    -> WHERE fecha_nacimiento = ( SELECT
                                    MAX(fecha_nacimiento)
                                  FROM tabla
                                );
+---------------+
| numero_podios |
+---------------+
|             5 |
+---------------+
1 row in set (0.00 sec)

Para saber qué pilotos tienen más podios que el piloto más joven, metemos toda esta subconsulta en un WHERE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> SELECT *
    -> FROM tabla
    -> WHERE numero_podios > ( SELECT numero_podios
    ->                         FROM tabla
    ->                         WHERE fecha_nacimiento = ( SELECT
    ->                                                      MAX(fecha_nacimiento)
    ->                                                    FROM tabla
    ->                                                  )
    ->                       );
+------+--------+----------+------------------+---------------+
| id   | nombre | apellido | fecha_nacimiento | numero_podios |
+------+--------+----------+------------------+---------------+
|    1 | piloto | uno      | 1990-01-02       |            10 |
|    5 | piloto | cinco    | 1999-03-09       |             6 |
+------+--------+----------+------------------+---------------+
2 rows in set (0.00 sec)

Se entiende?

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: 6
Ha disminuido su posición en 2 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta sencilla

Publicado por Carlos (3 intervenciones) el 07/11/2018 00:35:08
bien dicho, no he prestado la suficiente atención porque estaba en el trabajo, muchas gracias por tu tiempo, esta resuelta la consulta con tu ejemplo, 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