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]
Но это не показывает результаты. Я хочу показать пользовательскую запись и ее родительскую запись.
Ответы
Ответ 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