En realidad, no sé cómo puedo hacer esto, ya que es la primera vez que tengo que hacer esto. Tengo 2 tablas en mi base de datos.

Table 1 users
Table 2 Transfer History.

Aquí está mi código:

SELECT u.id
     , u.fname
     , u.lname
     , t.sender_id
     , t.beneficiary_id
     , t.amount
     , t.date_posted 
  from transfers t
  JOIN users u
    ON u.id = t.sender_id 
 WHERE u.id = '".$id."' 
 ORDER 
    BY t.date_posted DESC

Y hago eco de los detalles usando

                                    <?php $i = 1; while($row = ): ?>
                                            <tr>
                                                <td><?= $i++ ?></td>
                                                <td><?= $row['sender'] ?></td>
                                                <td><?= $row['sender'] ?></td>
                                                <td><?= $i++ ?></td>
                                                <td><?= $i++ ?></td>
                                            </tr>
                                    <?php endwhile ?>

En lugar de hacer eco del beneficiary_id, quiero repetir el nombre del beneficiario de la base de datos de los usuarios

0
Emma 13 oct. 2020 a las 18:32

1 respuesta

La mejor respuesta

No todo el mundo sabe que, con las bases de datos, no existe una regla que indique que solo puede unir una tabla en una consulta una vez. Parece que necesita unirse a los usuarios dos veces, una para la persona que envió el pago y otra para la persona que lo recibió:

    SELECT 
      su.fname as sender_fname,
      su.lname as sender_lname,
      bu.fname as beneficiary_fname,
      bu.lname as beneficiary_lname,
      t.sender_id,
      t.beneficiary_id,
      t.amount,
      t.date_posted
  FROM
    transfers t
    JOIN users su ON su.id = t.sender_id 
    JOIN users bu ON bu.id = t.beneficiary_id 
  WHERE su.id = '".$id."' 
  ORDER BY t.date_posted DESC

Su conjunto de resultados de consulta ahora contiene los nombres tanto del remitente como del receptor, y tienen un alias diferente para que pueda referirse a uno u otro en su php usando el alias

Es importante tener en cuenta que no puede salirse con la suya mencionando la tabla de usuarios solo una vez y usando OR (no puede decir ON u.id = t.sender_id OR u.id = t.beneficiary_id) porque esto provocará el número de filas ro aumentar: obtendrá dos filas por transferencia. Para facilitar la referencia de "este pago fue enviado por esta persona a esa persona", desea que aumente el número de columnas , no el número de filas. Para 100 pagos, desea un conjunto de resultados que sea "100 filas de dos columnas; un desde y un hasta" no desea "200 filas de una columna que contengan desde y hacia, en filas diferentes".

0
Caius Jard 13 oct. 2020 a las 16:07