0

私はあなたから助ける必要があります, これは私の問題です:

私は2つのテーブルを持っています

Friends
----------------------------------------
friends_club_1 | friends_club_2 | state
1234                 4321          1
2345                 1234          1
1234                 4567          1
4569                 1567          1



  User Info
  -----------------------------------------------
    id  |    name    |    surname     |    age   |
   2345     Jhonny         Jenny           24
   4567     Linda          Minda           23
   1567     Stefan         Refan           25
   1234     me             me              23
   4569     dani           mari            28
   4321     Star           Gate            24

次の結果が欲しいです:

Result
-----------------------------------------------------
my_friends   | state |  name  | surname | age

4321           1        Star       Gate    24
2345           1        Jhonny    Jenny    24
4567           1        Linda     Minda    23
1567           1        Stefan    Refan    25

ecc.... 

私は私ID 1234を知っているこの結果を望んでいます。

4

4 に答える 4

0

私は次のようなものを推測しています

SELECT UserInfo.*
FROM UserInfo
LEFT JOIN Friends ON (UserInfo.id IN (friends_club1, friends_club2))
WHERE UserInfo.id = 1234

?

于 2013-07-18T16:36:01.880 に答える
0

を使用しJOINてテーブルをリンクし、 と組み合わせて、UNION両方の友達のケースを処理できます。

SELECT uf.*, f.state
FROM User_Info u
INNER JOIN Friends f
  ON f.friends_club_1 = u.id
INNER JOIN User_Info uf
  ON uf.id = f.friends_club_2
WHERE u.id = 1234

UNION

SELECT uf.*, f.state
FROM User_Info u
INNER JOIN Friends f
  ON f.friends_club_2 = u.id
INNER JOIN User_Info uf
  ON uf.id = f.friends_club_1
WHERE u.id = 1234
于 2013-07-18T16:41:05.533 に答える
0

あなたの結果は正しくありません。「Stefan Refan」は結果に含まれません。

SELECT UI.id AS my_friends,
       COALESCE(F1.state,F2.state) AS state,
       UI.name, UI.surname, UI.age
FROM [User Info] as UI
LEFT OUTER JOIN [Friends] AS F1 ON (UI.id = F1.friends_club_1)
LEFT OUTER JOIN [Friends] AS F2 ON (UI.id = F2.friends_club_2)
WHERE COALESCE(F1.friends_club_2,F2.friends_club_1) = 1234;

F1.state と F2.state を合体させて、どちらが使用されているかを確認する必要があります。

于 2013-07-18T16:56:01.967 に答える