MySQL - Mostrar todos los registros asociados a una tabla única

 
Vista:
sin imagen de perfil

Mostrar todos los registros asociados a una tabla única

Publicado por Gabriel (1 intervención) el 20/02/2017 00:45:38
Tengo tres tablas (usuario, reporte y reporteAcusado), pero necesito listar todos los reportes y en cada uno mostrar los usuarios que han sido acusados. No he logrado dar con la consulta correcta, la más cercana me mostró los acusados separados, generando el mismo reporte por la cantidad de acusados que hay. Sé que esto se podría hacer en la programación (en este caso, PHP), recorriendo cada reporte y dentro recorriendo los acusados, tomando la id del reporte, pero me pregunto si se podría hacer con MySQL con algo que devuelva un arreglo o algo. Soy algo nuevo en esto de las consultas.

Aquí las tablas que tengo:

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
CREATE TABLE usuario (
 
    id int not null AUTO_INCREMENT PRIMARY KEY,
    nombre varchar(25) not null
 
);
 
CREATE TABLE reporte (
 
    id int not null AUTO_INCREMENT PRIMARY KEY,
    id_usuario int not null,
    desarrollo varchar(2000) not null,
 
    FOREIGN KEY (id_usuario) REFERENCES usuario (id)
 
);
 
CREATE TABLE reporteAcusado (
 
    id int not null AUTO_INCREMENT PRIMARY KEY,
    id_reporte int not null,
    id_usuario int not null,
 
    FOREIGN KEY (id_reporte) REFERENCES reporte (id),
    FOREIGN KEY (id_usuario) REFERENCES usuario (id)
 
);
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
Imágen de perfil de SuperIndio
Val: 102
Bronce
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Mostrar todos los registros asociados a una tabla única

Publicado por SuperIndio (79 intervenciones) el 20/02/2017 17:00:24
Yo mejoraria el diseño antes que nada

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
52
53
54
CREATE DATABASE IF NOT EXISTS DBlaweb;
 
Use  DBlaweb;
 
DROP TABLE Tusuario;
 
CREATE TABLE TUsuario (
    usuario             int 		not null,
    nombre              varchar(25) not null,
    PRIMARY KEY( usuario ) );
 
INSERT INTO TUsuario (usuario, nombre ) values (1, 'RICARDO RUBEN');
INSERT INTO TUsuario (usuario, nombre ) values (2, 'MARCOS RUBEN');
INSERT INTO TUsuario (usuario, nombre ) values (3, 'LISANDRO RUBEN');
INSERT INTO TUsuario (usuario, nombre ) values (4, 'LEANDRO RUBEN');
INSERT INTO TUsuario (usuario, nombre ) values (5, 'MARIANO RUBEN');
 
DROP TABLE TReporte;
 
CREATE TABLE TReporte (
    reporte             int 		not null,
    usuario          	int 		not null,
    desarrollo          varchar(200) 	not null,
    PRIMARY KEY( reporte ) );
 
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (1,2,'AAAAAAAAAAAAAAAAAAAAAAAAEWAAAAAA' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (2,2,'BBBBBBBBBBBBBBBBBBBBBQEWBBBB' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (3,3,'CCCCCCCCCCCCCWWECCCCCCCCCCCCC' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (4,2,'EEEEEEEEEEEEEEEEFDWWEEEEEEEEE' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (5,4,'FFFFFFFFASDSDFFFFFFFFFFFFFFF' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (6,2,'OOOOOOOOOOO2OOOOOOOOOOOOOOOOOO' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (7,5,'999999999993999999999999999999' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (8,3,'EEEEEENEKEE4EEEEEEEEEEEEEEEEE' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (9,3,'FFFFFFBFKFF5FFFFFFFFFFFFFFFF' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (10,3,'OOOOOFOKOO6OOOOOOOOOOOOOOOOOOO' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (11,3,'99999D9K9979999999999999999999' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (12,5,'EEEEESELEE8EEEEEEEEEEEEEEEEEE' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (13,5,'FFFFFAFLFF9FFFFFFFFFFFFFFFFF' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (15,5,'OOOOOAOFDGDFOOOOOOOOOOOOOOOOOO' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (16,5,'99999A99990GDFDF99999999999999' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (17,1,'EEEEEEEEEEEEEEFGDFEEEEEEEEEEE' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (18,1,'FFFFFFFFFFFFFFFFFFFFFFFFFFFF' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (19,1,'OOOOOOOOOOOOODFGDFDFOOOOOOOOOO' );
INSERT INTO TReporte ( reporte, usuario, desarrollo ) values (20,1,'FGDFGF999999999999999999999999' );
 
Create view VReporte as
     select a.reporte,
            a.desarrollo,
            a.usuario,
            b.nombre
       from TReporte a,
            TUsuario b
    where a.usuario = b.usuario
  order by 1, 2;
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
c:\Mariadb\bin>mysql --database=dblaweb --host=localhost --user=root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 22
Server version: 10.0.24-MariaDB mariadb.org binary distribution
 
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [dblaweb]> SELECT * FROM VREPORTE;
+---------+----------------------------------+---------+----------------+
| reporte | desarrollo                       | usuario | nombre         |
+---------+----------------------------------+---------+----------------+
|       1 | AAAAAAAAAAAAAAAAAAAAAAAAEWAAAAAA |       2 | MARCOS RUBEN   |
|       2 | BBBBBBBBBBBBBBBBBBBBBQEWBBBB     |       2 | MARCOS RUBEN   |
|       3 | CCCCCCCCCCCCCWWECCCCCCCCCCCCC    |       3 | LISANDRO RUBEN |
|       4 | EEEEEEEEEEEEEEEEFDWWEEEEEEEEE    |       2 | MARCOS RUBEN   |
|       5 | FFFFFFFFASDSDFFFFFFFFFFFFFFF     |       4 | LEANDRO RUBEN  |
|       6 | OOOOOOOOOOO2OOOOOOOOOOOOOOOOOO   |       2 | MARCOS RUBEN   |
|       7 | 999999999993999999999999999999   |       5 | MARIANO RUBEN  |
|       8 | EEEEEENEKEE4EEEEEEEEEEEEEEEEE    |       3 | LISANDRO RUBEN |
|       9 | FFFFFFBFKFF5FFFFFFFFFFFFFFFF     |       3 | LISANDRO RUBEN |
|      10 | OOOOOFOKOO6OOOOOOOOOOOOOOOOOOO   |       3 | LISANDRO RUBEN |
|      11 | 99999D9K9979999999999999999999   |       3 | LISANDRO RUBEN |
|      12 | EEEEESELEE8EEEEEEEEEEEEEEEEEE    |       5 | MARIANO RUBEN  |
|      13 | FFFFFAFLFF9FFFFFFFFFFFFFFFFF     |       5 | MARIANO RUBEN  |
|      15 | OOOOOAOFDGDFOOOOOOOOOOOOOOOOOO   |       5 | MARIANO RUBEN  |
|      16 | 99999A99990GDFDF99999999999999   |       5 | MARIANO RUBEN  |
|      17 | EEEEEEEEEEEEEEFGDFEEEEEEEEEEE    |       1 | RICARDO RUBEN  |
|      18 | FFFFFFFFFFFFFFFFFFFFFFFFFFFF     |       1 | RICARDO RUBEN  |
|      19 | OOOOOOOOOOOOODFGDFDFOOOOOOOOOO   |       1 | RICARDO RUBEN  |
|      20 | FGDFGF999999999999999999999999   |       1 | RICARDO RUBEN  |
+---------+----------------------------------+---------+----------------+
19 rows in set (0.00 sec)
 
MariaDB [dblaweb]>

u ordenada por usuario:
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
MariaDB [dblaweb]> SELECT * FROM VREPORTE order by usuario;
+---------+----------------------------------+---------+----------------+
| reporte | desarrollo                       | usuario | nombre         |
+---------+----------------------------------+---------+----------------+
|      20 | FGDFGF999999999999999999999999   |       1 | RICARDO RUBEN  |
|      19 | OOOOOOOOOOOOODFGDFDFOOOOOOOOOO   |       1 | RICARDO RUBEN  |
|      18 | FFFFFFFFFFFFFFFFFFFFFFFFFFFF     |       1 | RICARDO RUBEN  |
|      17 | EEEEEEEEEEEEEEFGDFEEEEEEEEEEE    |       1 | RICARDO RUBEN  |
|       6 | OOOOOOOOOOO2OOOOOOOOOOOOOOOOOO   |       2 | MARCOS RUBEN   |
|       4 | EEEEEEEEEEEEEEEEFDWWEEEEEEEEE    |       2 | MARCOS RUBEN   |
|       2 | BBBBBBBBBBBBBBBBBBBBBQEWBBBB     |       2 | MARCOS RUBEN   |
|       1 | AAAAAAAAAAAAAAAAAAAAAAAAEWAAAAAA |       2 | MARCOS RUBEN   |
|      11 | 99999D9K9979999999999999999999   |       3 | LISANDRO RUBEN |
|      10 | OOOOOFOKOO6OOOOOOOOOOOOOOOOOOO   |       3 | LISANDRO RUBEN |
|       9 | FFFFFFBFKFF5FFFFFFFFFFFFFFFF     |       3 | LISANDRO RUBEN |
|       8 | EEEEEENEKEE4EEEEEEEEEEEEEEEEE    |       3 | LISANDRO RUBEN |
|       3 | CCCCCCCCCCCCCWWECCCCCCCCCCCCC    |       3 | LISANDRO RUBEN |
|       5 | FFFFFFFFASDSDFFFFFFFFFFFFFFF     |       4 | LEANDRO RUBEN  |
|      16 | 99999A99990GDFDF99999999999999   |       5 | MARIANO RUBEN  |
|      15 | OOOOOAOFDGDFOOOOOOOOOOOOOOOOOO   |       5 | MARIANO RUBEN  |
|      13 | FFFFFAFLFF9FFFFFFFFFFFFFFFFF     |       5 | MARIANO RUBEN  |
|      12 | EEEEESELEE8EEEEEEEEEEEEEEEEEE    |       5 | MARIANO RUBEN  |
|       7 | 999999999993999999999999999999   |       5 | MARIANO RUBEN  |
+---------+----------------------------------+---------+----------------+
19 rows in set (0.00 sec)
 
MariaDB [dblaweb]>
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