2017-06-09 30 views
1

次のクエリを実行する際に問題があります。アイデアは、私は2つのテーブルStoresとUsersを持っているということです。ストアでは、私は列store_ownersとstore_last_modifiedを持っています、両方の値は、dbo.UsersのIDに関連する整数です。 2つの列に関連してユーザーに格納されている名前を表示する方法。そのように:同じ値とテーブルで2つの結合を照会する

select stores.name , users.name as name_store_owner , users.name as name_store_last_modified 

from stores 

LEFT JOIN users ON stores.store_owners=users.id (related to name_store_owner) 
LEFT JOIN users ON stores.store_last_modified=users.id (related to name_store_last_modified) 

どうすればよいですか?

ありがとうございます。

+0

あなたはJOINテーブルを格納しますが、参加条件でユーザー列を持っていますか? – jarlh

答えて

2

from節で同じテーブルを2回参照できるように、テーブルに別名を付ける必要があります。また、あなたは(usersないstores)右の表を参照する必要があります。

select s.name, uo.name as name_store_owner, um.name as name_store_last_modified 
from stores s left join 
    users uo 
    on s.store_owners = uo.id left join 
    users um 
    on s.store_last_modified = um.id 
+0

私はそれを試みます、ありがとう。ええ、それは間違いでした。申し訳ありません、私はその投稿を編集しました。 – Daniel

0

条件が二度テーブルを参照せずにチェックすることができると思われます。あなたの質問から

select * from 
stores s 
left join 
users u on u.id = s.store_owners 
and u.id = s.store_last_modified 

は、それが単一の行を格納するための表の列の両方で一致している必要があり、そのユーザーのID(ID)が表示されます。

+0

店舗のオーナーが最後に変更されたユーザーでない場合はどうなりますか? –

+0

@ destination-data OPは、ストアの所有者自身が最後に変更されたユーザーであるという結果が必要であるかのように、質問が私に現れました。両方の列が別の表の1つの列に関係しているので、「出現」という言葉を使用することで安全でした。 – Coder1991

+0

サンプルデータがなくても、これらの質問に答えるのは難しいですね。 –

関連する問題