2016-11-27 20 views
1

両方の列の型が同じ場合、主キー値で外部値を置き換える方法を知りたいと思います。主キーによる外部キーの置換

表1:ユーザーuser_iduser_name

表2:フォロワーuser_namefollowed_user_name

(名前は一意であると仮定)

私は同じことを得るために、クエリを作成したいです表2ただし、それぞれuser_nameidおよびfollower_user_nameidです。どちらも同じタイプなので混乱しています。

私がこれまで持っているもの:

SELECT 
    table1.user_id, 
    table2.follower_user_name #This needs to be replaced 
FROM table2 
INNER JOIN table1 
    ON table2.user_name = table1.user_name 

PS:これは私が働いているデータベースであり、私はそれを設計していませんでした。なぜ彼らがフォロワーテーブルの代わりにIDを使用しなかったのか分かりません。

答えて

1

あなたは、その後、ユーザーの名前を一度ユーザー名のと、一度、二回usersfollowersに参加することができます。の二つの属性を持つ結果:

SELECT u1.id, u2.id 
FROM followers f 
JOIN users u1 ON u1.user_name = f.user_name 
JOIN users u2 ON u2.user_name = f.followed_user_name 
+0

左から右への列の順序に依存しないことを強く推奨します。また、あなたはOPのテーブル名を変更しました(良いことかもしれません)。 – onedaywhen

+0

@onedaywhenこれらは質問のテキストで与えられた名前ですが、OPのcod snippetはそれに先行するテキストと一致しません。 – Mureinik

1

私は少し奇妙受け入れ答えを見つけます同じ名前?!言うまでもなく、そのような結果は無関係です。

あなたは私たちが(SQLでASと呼ばれる)rename関係演算子を使用する必要があることを受け入れるならば、私たちは私たちを保持している、NATRUAL JOINの使用を可能にするテーブル式への操作をプッシュすることができ幸せrelationlanders:

SELECT user_id, follower_user_id 
    FROM table2 
     NATURAL JOIN table1 
     NATURAL JOIN 
     (SELECT user_id AS follower_user_id, 
       username AS follower_user_name 
      FROM table1) f; 
関連する問題