Подтвердить что ты не робот

INNER JOIN же таблица

Я пытаюсь получить некоторые строки из одной таблицы. Это таблица пользователя: пользователь имеет user_id и user_parent_id.

Мне нужно получить строку user_id и user_parent_id. Я закодировал что-то вроде этого:

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]

Но это не показывает результаты. Я хочу показать пользовательскую запись и ее родительскую запись.

4b9b3361

Ответ 1

Я думаю, проблема в вашем состоянии 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: Вероятно, вы должны использовать LEFT JOIN, если есть пользователи без родителей.

Ответ 2

Возможно, это должен быть выбор (если я правильно понял вопрос)

select user.user_fname, user.user_lname, parent.user_fname, parent.user_lname
... As before

Ответ 3

Ваш запрос должен работать нормально, но вы должны использовать псевдоним parent, чтобы показать значения родительской таблицы следующим образом:

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];

Ответ 4

Вы также можете использовать UNION, например

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]

Ответ 5

Я не знаю, как создается таблица, но попробуйте это...

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