2010-11-29 18 views
0

2つのテーブルがあります。2つのID列を持つテーブルから名前を取得するクエリ

id (int) 
old_category (int) 
new_category (int) 

私は両親のための1つのクエリですべての古いカテゴリと新しいカテゴリ名を引っ張るために、クエリを作りたい:最初は、第二のような構造を有している

id (int) 
parent_id (int) 
category_name (varchar) 

のような構造を有しています。つまり、古い親の名前を取得してから、新しい親の名前を取得する必要があります。 2番目の表には、最初の表で作成されたすべての親ID変更の履歴リストが含まれています。これどうやってするの?ありがとう!

+0

さあ、これは簡単な参加です... –

+2

@barti_ddu:誰もがどこかで始まります。あるいは、DNAにコード化された簡単な結合で生まれましたか? – Stephen

+0

@barti_dduなんで?多くの人が初心者の質問をしています。 SEのためのSOページに追加するだけです。 – johnny

答えて

0

私はあなたが何を意味するのかを推測がかかります。

tblOne

ID

cat_name

tblTwo

ID

あなたがはるかにこれを取得するために管理している場合

tblOneIdは(old_cat)

new_cat int型

select * from tblOne t1, tblTwo t2 Where t1.id = t2.tblOneId 
+0

私は古いカテゴリと新しいカテゴリの名前を取得したいと思います。 2番目の表には、カテゴリ名の変更履歴レコードが含まれています。意味、1カテゴリが親から別のカテゴリに移動しました(元の投稿でこれを更新していますが、これは不明です)。 – Alexander

+0

はold_categoryで、最初のテーブルのIDですか? – johnny

1
SELECT old_cat.category_name, new_cat.category_name 
    FROM join_table 
LEFT JOIN category_table as old_cat 
     ON old_cat.id = join_table.old_category 
LEFT JOIN category_table as new_cat 
     ON new_cat.id = join_table.new_category; 

をint型、それがコーディング停止とMySQL JOIN Syntaxを学習を開始する時間です。

0

参加しますか?

select * from table1 
    join table2 j1 on table2.id = table1.old_category 
    join table2 j2 on table2.id = table1.new_category 
0
SELECT 
    t.id, 
    t.old_category, 
    oc.category_name as old_category_name, 
    t.new_catevory, 
    nc.category_name as new_category_name 
FROM 
    table1 t 
    INNER JOIN table2 oc on oc.id = t.old_category 
    INNER JOIN table2 nc on nc.id = t.new_category 

私は真剣ところで、列名にいくつかの変更を検討します。始めるには:なぜtable2のカテゴリにidの後置修飾子がないのですか?

関連する問題