-5

3つのテーブルがあります この構造を見てください

ユーザー テーブル

====================== 

id(users.id) |username | status
----------------------------------
56           | mark     | 1
----------------------------------
57           | john     | 1
----------------------------------
58           | lina     | 1
----------------------------------
59           | lara     | 1
----------------------------------

ウィンクテーブル

======================  
wink_id | from_id(fk from users.id) | to_id(fk from user.id) | wink_flag
--------------------------------------------------------------------------
1       | 56                        | 57                     | 1
--------------------------------------------------------------------------
2       | 56                        | 58                     | 1
--------------------------------------------------------------------------

お気に入りのテーブル

====================== 
fav_id  | from_id(fk from user.id)  | to_id(fk from user.id) | fav_flag 
------------------------------------------------------------------------
1       | 56                        | 59                      | 1
------------------------------------------------------------------------
1       | 56                        | 58                      | 1
------------------------------------------------------------------------

このようなデータを取得するには、結合を残します。

=======================================================================


id  |  wink_flag  |  fav_flg | status
------------------------------------
57  |  1          | Null
------------------------------------
58  |  1          | 1
------------------------------------
59  |  Null       | 1
------------------------------------

ユーザーとの左結合を使用して、この 2 つのテーブルの winks と fav を結合しています

  1. クエリ

結果が来るとき user.id <> 56

56 user.id を使用してログインしているときを意味します

次に、私を除くすべてのユーザー行に、56 user.id としてログインしていることを示します。

結果はこのようになります。

======================================
id  |  wink_flag  |  fav_flg | status
------------------------------------
57  |  1          | Null
------------------------------------
58  |  1          | 1
------------------------------------
59  |  Null       | 1
------------------------------------

上記の結果のように SQL クエリを作成するにはどうすればよいですか。

助けて。

4

2 に答える 2

0

試してみてくださいLEFT JOIN

   SELECT u.id, w.wink_flag, f.fav_flag, u.status
     FROM users u
LEFT JOIN winks w 
          ON u.id = w.to_id
LEFT JOIN favourite f 
          ON u.id = f.to_id
    WHERE w.wink_flag IS NOT NULL 
       OR f.fav_flag IS NOT NULL;

結果:

╔════╦═══════════╦══════════╦════════╗
║ ID ║ WINK_FLAG ║ FAV_FLAG ║ STATUS ║
╠════╬═══════════╬══════════╬════════╣
║ 57 ║ 1         ║ (null)   ║      1 ║
║ 58 ║ 1         ║ 1        ║      1 ║
║ 59 ║ (null)    ║ 1        ║      1 ║
╚════╩═══════════╩══════════╩════════╝

このSQLFiddleを参照してください

于 2013-05-13T08:01:05.733 に答える