1
votes

mysql - joint deux tables pour obtenir les données des mêmes tables autre ligne

J'ai deux tables nommées utilisateurs et requêtes structurées comme suit:

utilisateurs:

+----+--------+-----------------+--------+---------+
| id | name   | email           | name   | inviter |
+----+--------+-----------------+--------+---------+
|  2 | david  | david@test.com  | david  |       1 |
|  3 | smith  | smith@test.com  | smith  |       2 |
|  4 | philip | philip@test.com | philip |       2 |
|  1 | super  | super@test.com  | super  |    NULL |
+----+--------+-----------------+--------+---------+


0 commentaires

3 Réponses :


1
votes

Vous devez à nouveau joindre les utilisateurs aux requêtes et aux utilisateurs pour obtenir le nom de l ' invitant :

| id  | name   | email           | inviter |
| --- | ------ | --------------- | ------- |
| 1   | super  | super@test.com  |         |
| 2   | david  | david@test.com  | super   |
| 3   | smith  | smith@test.com  | david   |
| 4   | philip | philip@test.com | david   |

Voir la démo .
Résultats:

select u.*, u2.name inviter
from users u 
left join requests r on r.email = u.email
left join users u2 on u2.id = r.inviter
order by u.id


0 commentaires

0
votes

Vous devez rejoindre la table users une seconde fois pour obtenir le nom de l'invitant. Par exemple:

select
  u.*,
  u2.name as inviter
from users u
left join requests r on r.email. = u.email
left join users u2 on u2.id = r.inviter
order by u.id


0 commentaires

1
votes

Vous devez utiliser la jointure gauche deux fois avec la table utilisateur pour obtenir cela, reportez-vous ci-dessous à db fiddle et interrogez

SELECT US.*, US1.name 
FROM users AS US 
LEFT JOIN requests AS RQ ON RQ.email = US.email
LEFT JOIN users AS US1 ON US1.id = RQ.inviter

DB FIDDLE LINK: ICI


0 commentaires