来自多个表的SQLite select语句被误解了

时间:2018-01-16 09:16:14

标签: sql sqlite

假设我们有3个这样的表:

tab_user | id_usr | ... |

tab_cat | id_cat | ... |

tab_user_cat_relationship | id_cat(tab_cat的fk)| id_usr(tab_user的fk)| type_ac |

enter image description here

我需要按特定类别ID选择所有用户及其type_ac(来自tab_user_cat),所以我这样做:

select tab_user._id, tab_user_cat.type_ac
from tab_user,tab_user_cat
where tab_user._id = tab_user_cat.fk_user_id
and tab_user_cat.fk_cat_id='01'

预期回应:

| _id|  type_ac  |

| 001|           |

| 002|           |

| 003|     B     |

| 004|     A     |

但我只得到:

| _id | type_ac |

| 003|     B    |

| 004|     A    |

1 个答案:

答案 0 :(得分:1)

使用LEFT OUTER JOIN

select tab_user._id, tab_user_cat.type_ac
from tab_user
left outer join tab_user_cat 
    on tab_user._id = tab_user_cat.fk_user_id
    and tab_user_cat.fk_cat_id='01'

注意: - 始终使用ANSI JOIN语法。