MySQL - Problema con sentencias en mysql

   
Vista:

Problema con sentencias en mysql

Publicado por Cristian perezbroncheur@gmail.com (1 intervención) el 28/10/2017 00:00:39
hola amigos, acá nuevamente con otro problema, en esta oportunidad me pidieron realizar 3 tablas (autor, editorial y librería) de las cuales debo listar el código del autor, nombre y la cantidad de libros que tiene en el registro de la
librería, esto lo realice e invoque los datos de la tabla autor y librería, pero mi problema se presenta al contar los libros por código de autor, los que me dan como resultado cero, a continuación dejo el código para que me puedan ayudar, también puedo decir que el autor 0001 tiene como cantidad 4 libros y me resulta cero.




problema

espero me puedan ayudar a solucionar mi problema.

de antemano muchísimas 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

Problema con sentencias en mysql

Publicado por leonardo_josue (301 intervenciones) el 01/11/2017 19:16:20
Hola Cristian:

Estás muy cerca de dar con la respuesta, sólo tienes un pequeño error en la subconsulta. tú estás poniendo esto en el where:

1
2
3
..
LIBRERIA.CODIGO_AUTOR = LIBRERIA.NOMBRE
...

Y si checas tu tabla LIBRERIA NO HAY NINGÚN REGISTRO QUE CUMPLA CON ESTA CONDICION, por lo tanto el resultado siempre es cero... esto es tan absurdo como pedirle a una manzana que a su vez sea una naranja... simplemente nunca podrá ser. Lo que tienes que hacer es igualar el campo CODIGO_AUTOR con el CODIGO_AUTOR de tu tabla externa, es decir, hacer esto:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
mysql> SELECT * FROM autor;
+--------------+--------------------+
| Codigo_autor | nombre             |
+--------------+--------------------+
| 0001         | LUIS JOYANES       |
| 0002         | CATERINA VELASQUEZ |
| 0003         | CARMEN GIL         |
| 0004         | ALVARO GOMEZ       |
| 0005         | LUIS ANGULO        |
| 0006         | ANA MARIA VILLAR   |
+--------------+--------------------+
6 rows in set (0.00 sec)
 
mysql> SELECT * FROM libreria;
+--------------+--------------+---------------------------------------+------------------+--------+----------------+
| Codigo_autor | Codigo_libro | nombre                                | codigo_editorial | precio | porc_descuento |
+--------------+--------------+---------------------------------------+------------------+--------+----------------+
| 0004         | 0009         | ADMINISTRACION DE BASES DE DATOS      | 0005         | 36.500 | 20             |
| 0005         | 0011         | BASES DE DATOS                        | 0003         | 32.000 | 0              |
| 0005         | 0010         | ESTRUCTURAS DE DATOS                  | 0002         | 29.200 | 5              |
| 0003         | 0007         | FUNDAMENTOS DE PROGRAMACION           | 0001         | 46.500 | 15             |
| 0001         | 0002         | GUIA COMPLETA DE PROGRAMACION EN JAVA | 0001         | 33.520 | 5              |
| 0001         | 0004         | HARDWARE Y SOFTWARE                   | 0001         | 26.700 | 25             |
| 0006         | 0012         | INTRODUCCION A .NET                   | 0001         | 46.500 | 10             |
| 0001         | 0003         | INTRODUCCION A LA INFORMATICA         | 0002         | 51.000 | 0              |
| 0002         | 0006         | INTRODUCCION A LAS BASES DE DATOS     | 0005         | 52.100 | 40             |
| 0002         | 0005         | INTRODUCCION A LOS ALGORITMOS         | 0003         | 36.000 | 30             |
| 0001         | 0001         | SOLUCIONES DE PROGRAMACION            | 0001         | 45.200 | 10             |
| 0003         | 0008         | ¿COMO PROGRAMAR EN JAVA?              | 0002         | 48.000 | 10             |
+--------------+--------------+---------------------------------------+------------------+--------+----------------+
12 rows in set (0.00 sec)
 
mysql> SELECT
    ->   Autor.codigo_autor,
    ->   autor.nombre,
    ->   ( SELECT COUNT(*)
    ->     FROM libreria
    ->     WHERE libreria.codigo_autor = autor.codigo_autor
    ->   ) total_libros
    -> FROM autor;
+--------------+--------------------+--------------+
| codigo_autor | nombre             | total_libros |
+--------------+--------------------+--------------+
| 0001         | LUIS JOYANES       |            4 |
| 0002         | CATERINA VELASQUEZ |            2 |
| 0003         | CARMEN GIL         |            2 |
| 0004         | ALVARO GOMEZ       |            1 |
| 0005         | LUIS ANGULO        |            2 |
| 0006         | ANA MARIA VILLAR   |            1 |
+--------------+--------------------+--------------+
6 rows in set (0.00 sec)

Haz la prueba y nos comentas.

Saludos
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