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 | +----+--------+-----------------+--------+---------+
3 Réponses :
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
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
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