2016-06-12 16 views
0

私は一つにこれらの2つのクエリを達成するために探しています:1つの単一のmysqlクエリで列の値に基づいて列の値を取得する方法は?

SELECT category_uri, parent_id FROM categories where ID = 2 

// the output of the above query is that category_uri is "men" and parent_id is 1, which i now will use in another query: 

SELECT category_uri FROM categories where ID = 1 

// the output of this is category_uri "jackets" 

私は今、ID 2に基づいて、それを言うことができ、完全なカテゴリのURIはmen/jackets

である。しかし、代わりにそのような2つのクエリの、どこI parent_idの値を次のものに渡しますが、これはより単純で効率的な方法ではできませんか?

答えて

0

は、あなたは二つの結果、男性とジャケットを取得します。このようにして、別名

SELECT c1.category_uri, c2.category_uri FROM categories c1 left join categories c2 on (c1.parent_id=c2.id) where c1.id = 2 
0
Select category_uri from categories where ID=2 
union 
SELECT category_uri FROM categories where ID = (Select parent_id FROM categories where ID = 2) 

を使用してテーブルを結合することができます。そして、あなたは

0

クエリ

SELECT 
    C1.category_uri, C2.category_uri, 
    CONCAT(C1.category_uri ,'/',C2.category_uri) AS full_category_uri 
FROM 
    categories C1 
LEFT JOIN 
    categories C2 
    ON C1.parent_id=C2.id 
WHERE 
    C1.id = 2; 

結果

category_uri  category_uri  full_category_uri 
------------------------------------------------------------- 
men    jackets   men/jackets 

参照してください好むとして扱うことができるSQLFiddle

関連する問題