Estoy tratando de get algunas filas de la misma table. Es una tabla de usuario: el usuario tiene user_id
y user_parent_id
.
Necesito get la fila user_id
y la fila user_parent_id
. He codificado algo como esto:
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]
Pero no muestra los resultados. Quiero mostrar el logging del usuario y su logging principal.
Creo que el problema está en tu condición de 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]
Editar : Probablemente deberías usar LEFT JOIN
si hay usuarios sin padres.
Tal vez este debería ser el seleccionado (si entiendo la pregunta correctamente)
select user.user_fname, user.user_lname, parent.user_fname, parent.user_lname ... As before
Su consulta debería funcionar bien, pero debe usar el alias parent
para mostrar los valores de la tabla principal de esta manera:
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];
También puedes usar UNION como
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]
No sé cómo se crea la tabla, pero intenta esto …
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