0

(以下の例は架空のものですが、概念を示しています)。

MySQL を使用して、2 つのテーブルがあるとします。

userFromID  userToId  moreInfo
1           2         cat
1           3         dog
4           1         bear
3           4         fish

と...

userId  someInfo addlInfo
1       m         32
2       f         33
3       m         25
4       f         28

そして、ユーザー ID を照会し、user1 と関係を共有するすべてのユーザーの両方のテーブルから結合された情報を取得したいと考えています。

最初のテーブルに次のようなものがあると仮定すると、alter table thatFirstTable add unique index(userFromId, userToId)重複はありません.2つのID間の各関係は一意になります.

誰が「from」か「to」かは関係ありません

したがって、ユーザー ID との関係を照会した場合、望ましい結果は次のようになります。

userId  moreInfo  someInfo  addlInfo
2       cat       f         33
3       dog       m         25
4       bear      f         28

ありがとう。

/編集これは「機能します」が、もっと良い方法があると思いますか?

SELECT * FROM users JOIN friends ON friends.userFrom = users.id OR friends.userTo = users.id WHERE users.id != 1 AND friends.userFrom = 1 OR friends.userTo = 1

/EDIT2 - 目標をより適切に反映するようにサンプル出力を更新しました

4

3 に答える 3

0

このクエリを試してください::

select tbl2.userid,tbl1.moreinfo,
tbl2.someinfo,tbl2.addinfo
from tbl1 join tbl2
on (tbl1.usertoid = tbl2.userid and tbl1.userfromid = 1)
于 2012-12-20T10:12:48.677 に答える
0

以下のクエリでテーブルを結合する必要があります。

select u.userId, f.moreInfo, u.someInfo, u.addlInfo
from users AS u INNER JOIN friends AS f ON u.userId = f.UserToId
where f.userFrom = 1
于 2012-12-20T10:12:52.240 に答える
0

これを試して。テスト済みで 100% 動作しています

select a.userToID, a.moreInfo, b.someInfo, b.addInfo from tbl1 a 
left outer join
tbl2 b on a.userToID = b.userId
where a.userFromID = 1;
于 2012-12-20T10:31:22.933 に答える