2017-02-14 223 views
0

我有2個表:SELECT語句檢索列相同兩次

表1名爲category_desription,它包含2個字段:CATEGORY_NAMECATEGORY_ID

表2命名爲包括CATEGORY_IDparent_Category_id字段其外鍵從在第一個表CATEGORY_ID

我想選擇4場,其中結果將包含CATEGORY_ID,它的名字CATEGORY_NAMEparent_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別名的概念。提供確切的解決方案從來就不是一個意圖。 – 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細節