J'essaie d'obtenir des lignes de la même table. C'est une table utilisateur: l'utilisateur a user_id
et user_parent_id
.
Je dois obtenir les lignes user_id
et user_parent_id
. J'ai codé quelque chose comme ceci:
SELECT user.user_fname, user.user_lname
FROM users as user
INNER JOIN users AS parent
ON parent.user_parent_id = user.user_id
WHERE user.user_id = $_GET[id]
Mais cela ne montre pas les résultats. Je veux afficher l'enregistrement utilisateur et son enregistrement parent.
Je pense que le problème est dans votre état JOIN
.
SELECT user.user_fname,
user.user_lname,
parent.user_fname,
parent.user_lname
FROM users AS user
JOIN users AS parent
ON parent.user_id = user.user_parent_id
WHERE user.user_id = $_GET[id]
Edit : Vous devriez probablement utiliser LEFT JOIN
s'il y a des utilisateurs sans parents.
Vous pouvez également utiliser UNION comme
SELECT user_fname ,
user_lname
FROM users
WHERE user_id = $_GET[id]
UNION
SELECT user_fname ,
user_lname
FROM users
WHERE user_parent_id = $_GET[id]
Peut-être que cela devrait être le choix (si je comprends bien la question)
select user.user_fname, user.user_lname, parent.user_fname, parent.user_lname
... As before
Votre requête devrait fonctionner correctement, mais vous devez utiliser l'alias parent
pour afficher les valeurs de la table parente comme ceci:
select
CONCAT(user.user_fname, ' ', user.user_lname) AS 'User Name',
CONCAT(parent.user_fname, ' ', parent.user_lname) AS 'Parent Name'
from users as user
inner join users as parent on parent.user_parent_id = user.user_id
where user.user_id = $_GET[id];
Je ne sais pas comment la table est créée mais essayez ceci ...
SELECT users1.user_id, users2.user_parent_id
FROM users AS users1
INNER JOIN users AS users2
ON users1.id = users2.id
WHERE users1.user_id = users2.user_parent_id