0

私がこれらのテーブルを持っているとしましょう:期待される結果を得るために私のSQLリクエストは何ですか?

テーブル user_group:

group_id          |   user_id       |   is_active
1                          2               1
1                          3               1
2                          2               1
4                          2               1

テーブル グループ :

id |     name
1       group1
2       group2
3       group3
4       group4
5       group5
6       group5

期待される結果

group_id       |      name      | user_id    |   is_active
 1                   group1         2               1
 2                   group2         2               1
 3                   group3         2               0
 4                   group4         2               1
 5                   group5         2               0
 6                   group6         2               0

私は試した

SELECT g.id, g.name, ug.user_id, ug.is_active
FROM group g
LEFT OUTER JOIN user_group uc ON ug.group_id = g.id
WHERE ug.user_id =2

しかし、私はユーザー2が入っているグループしか持っていません(つまり、グループ1、グループ2、およびグループ4)

4

3 に答える 3

3

これを試して:

SELECT  id ,
        name ,
        COALESCE(user_ID, 2) user_id ,
        COALESCE(is_active, 0) is_active
FROM    tableGroup
        LEFT JOIN user_group ON id = group_id
                                AND user_Id = 2

ここでこれをいじることができます

于 2012-09-11T17:00:05.327 に答える
1
SELECT g.id, g.name, ug.user_id, ug.is_active 
FROM group g 
LEFT OUTER JOIN user_group uc ON ug.group_id = g.id AND ug.user_id =2 

where句に条件がある場合は、左結合を内部結合に変換します。

于 2012-09-11T16:44:52.143 に答える
0
SELECT table_group.*, user_group.user_id, IFNULL(user_group.is_active, 0)
FROM table_group
LEFT JOIN user_group ON table_group.id = user_group.group_id
于 2012-09-11T16:11:00.013 に答える