Можно ли выбрать значение в таблице в другой строке, используя этот идентификатор? - PullRequest
1 голос
/ 09 октября 2011

У меня есть таблица, которая имеет следующую структуру:

id     name    id_relation
---------------------------
1      this    NULL
2      that    1

Я хочу, чтобы запрос получил вместо id_relation имя коррелирующего идентификатора (в данном случае - 'this', поэтому в конце я получу такой результат:

id  name    parent_name
-----------------------
2   that    this

Возможно ли это сделать?

Ответы [ 2 ]

3 голосов
/ 09 октября 2011

Да. Присоединяй стол к себе:

select t1.id, t1.name, t2.name as parent_name
from mytable t1
left join mytable t2 on t2.id = t1.id_relation
where t1.id = 2; -- where clause is optional. leave off to get all rows

Этот запрос будет возвращать строки для каждой строки в вашей таблице, даже если нет соответствующей строки «отношения».

Если вы хотите ограничить строки результатов только теми, у которых есть совпадающая строка (как показано в вашем примере), удалите ключевое слово LEFT.

0 голосов
/ 09 октября 2011

Вы должны сделать соединение таблицы на себя. Что-то вроде; select a.name, b.name from foo a, foo b where a.id_relation = b.id;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...