PHP - Registros duplicados con consulta INNER JOIN

 
Vista:
sin imagen de perfil
Val: 14
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Registros duplicados con consulta INNER JOIN

Publicado por Paola (8 intervenciones) el 24/02/2020 00:04:01
Hola, mi problema es que al realizar la consulta, se duplican los registros de la tabla datos personales, sin embargo de la tabla formaciones no, y al añadir mas tablas abajo estas tambien se duplican. No se como solucionarlo, deberia usar un while o algo?
Aqui mi codigo:

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
     $Connection = new PDO("mysql:host=localhost;dbname=proyecto1","root","");
     $statement = $Connection->prepare("SELECT
            usuarios.*, datospersonales.*, formacion.*
        FROM usuarios
        INNER JOIN datospersonales ON usuarios.documento = datospersonales.documento
        INNER JOIN formacion ON usuarios.documento = formacion.documento
        WHERE
            usuarios.documento = :mi_parametro");
 
    $statement->execute([
        'mi_parametro' => $_SESSION['usuario']['documento']
    ]);
    $registros = $statement->fetchAll(PDO::FETCH_OBJ);
    if ($statement->rowCount() > 0) {
        ?>
        <div class="content-wrapper">
          <!-- Primera tabla-->
           <div class="box-header"><h3 class="box-title"> Datos Personales </h3></div>
           <div class="box-body table-responsive no-padding">
                        <table class=" table table-hover">
                        <tbody>
                        <?php
                         foreach ($registros as $registro) {
                        ?>
                          <tr>
                          <th> Cedula de Identidad </th>
                          <td><?= $registro->documento ?></td>
                          </tr>
                          <tr>
                          <th>Fecha de Nacimiento</th>
                          <td><?= $registro->fnacimiento?></td>
                          </tr>
                         <?php } ?>
                          </tbody>
                        </table>
                      </div>
 
            <!-- Fin primera tabla-->
            <!-- 2 tabla-->
                    <div class="box-header"><h3 class="box-title">Formación y Capacitacion</h3></div>
                    <div class="box-body table-responsive">
                    <table class="table">
                     <thead>
                     <tr>
                     <th>Titulo</th>
                     <th>Nivel de Estudio</th>
                     <th>Institución</th>
                     </tr>
                     </thead>
                     <tbody>
                    <?php
                      foreach ($registros as $formacion) {
                    ?>
                    <tr>
                    <td><?= $formacion->titulo_carrera ?></td>
                    <td><?= $formacion->nivel_estudio ?></td>
                    <td><?= $formacion->universidad ?></td>
                    </tr>
                    <?php
                    }?>
                     </tbody>
                    </table>
                    </div>
                  </div>
       <?php
            } // Cerramos el if
        ?>
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 Fran
Val: 20
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Registros duplicados con consulta INNER JOIN

Publicado por Fran (8 intervenciones) el 24/02/2020 01:18:01
Como tienes estructuradas las tablas en tu BD?
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
sin imagen de perfil
Val: 14
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Registros duplicados con consulta INNER JOIN

Publicado por Paola (8 intervenciones) el 24/02/2020 01:40:11
Estas son mis tablas
ER
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 Fran
Val: 20
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Registros duplicados con consulta INNER JOIN

Publicado por Fran (8 intervenciones) el 24/02/2020 02:04:58
Cuando trabajas con Inner Join es recomendable que las columnas tengan nombres distintos, pero sin cambiar su tipo. Por ejemplo:

TABLA USUARIOS
documento int(15)
----------------------------
TABLA IDOMA
documentoIdioma int(15)
----------------------------
TABLA INVESTIGACIONES
documentoIInvestigaciones int(15)
----------------------------
TABLA DATOSPERSONALES
documentoIDatosPersonales int(15)

Cuando relacionas lo haces con las PK o alguna otra llave o índice. por ello que tengan el mismo nombre no vale la pena

Ahora antes de cambiar el sql intenta quitar de la consulta el "inner" y deja solo el JOIN.

También intenta utiliza USING en ves de ON en el join deberia ayudarte a deshacerte de los duplicados.

También intenta con "SELECT DISTINCT" para deshacerte de los duplicados.

Tomate tu tiempo.. y prueba estas alternativas.
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