2017-02-14 8 views
0

У меня есть 2 таблицы:Выбор оператора для получения того же колонки дважды

Таблица 1 имя category_desription, он содержит 2 поля: category_name и category_id.

Таблица 2 имени категории включает CATEGORY_ID и parent_Category_id поля, которые являются внешними ключами от CATEGORY_ID в первой таблице.

Я хочу, чтобы выбрать один из 4 полей, в результате чего результат будет содержать CATEGORY_ID и его имя category_name и parent_category_id и его название, а что происходит, чтобы быть category_name а

я не мог выяснить, как это сделать до сих пор, поэтому я желаю, если кто-то поможет мне в этом.

+1

Добавить некоторые выборочные данные таблиц и ожидаемый результат - как хорошо отформатированный текст. Также покажите нам свою текущую попытку запроса. – jarlh

ответ

1

Я надеюсь, что это будет решать ваш prblm

SELECT category_id, 
(Select category_name from table1 where category_id= table2.category_id) as category_name , 
parent_category_id, 
(Select category_name from table1 where category_id= table2.parent_category_id) 
as parent_category_name from table2 
0

Это простой вопрос конфликта имен в SQL, который может быть легко решена с помощью alias

например

Select t1.category_id, t1.category_name, t2.category_id, t2.category_name 
from table1 t1 join table2 t2 on <some condition..> 

Вы также можете дать разные имена результата колонке

Select t1.category_id, t1.category_name as 'Parent Category Name', 
t2.category_id, t2.category_name as 'Category Name' 
from table1 t1 join table2 t2 on <some condition..> 

Я надеюсь, что это решает проблему.

+0

downvote, потому что category_name не является вторым полем таблицы – Darshak

+0

@DarshakGajjar это просто объясняет OP концепцию 'alias'. Предоставление точного решения никогда не было целью. – madcap

+0

: - если вы объясните концепцию OP, тогда вы можете просто прокомментировать вопрос как предложение. – Darshak

0
with category_desc as 
(select 1 as category_id, 'Category 1' as category_name 
    from dual 
    union all 
    select 2 as category_id, 'Category 2' as category_name from dual), 
category as 
(select 1 as category_id, 2 as parent_category_id from dual) 
select c.category_id, 
     c_d.category_name, 
     c.parent_category_id, 
     pc_d.category_name parent_category_name 
    from category c 
    join category_desc c_d 
    on c_d.category_id = c.category_id 
    join category_desc pc_d 
    on pc_d.category_id = c.parent_category_id 

использовать category_desc с другим псевдонимом, чтобы найти parent_category детали

 Смежные вопросы

  • Нет связанных вопросов^_^