【发布时间】:2015-04-15 22:39:04
【问题描述】:
我无法从表中选择所有行并用 0 填充不匹配的行。
表“模块” -------------------------------------------------- -------- |编号 |菜单名 |模块名称 | all_access | -------------------------------------------------- -------- 1 本书 0 2 光盘光盘 0 3 磁带 0 表“用户” -------------------- |编号 |用户名 | -------------------- 1 韦德兰 表“用户模块” ------------------------------------------ |编号 |用户 ID |模块 ID |活跃 | ------------------------------------------ 1 1 1 1 2 1 2 1 3 2 2 1如果我对用户名“vedran”运行查询,我希望得到这样的输出
-------------------------------------------------- ---------------- |编号 |菜单名 |模块名称 | all_access |活跃 | -------------------------------------------------- ---------------- 1 本书 0 1 2 光盘光盘 0 1 3 磁带 磁带 0 0所以用户 vedran 的 ID 为 1,而 ID 为 1 的用户拥有活动模块 1 和 2,但我也想获得第三个模块,但设置为 0。
模型如下所示:
我尝试使用此查询:
SELECT M.*, ZM.active FROM modul M JOIN user_modul UM ON (M.id = UM.modul_id) JOIN user U ON (UM.user_id = U.id) WHERE U.id = 1 ORDER BY M.id ASC但这仅返回两行,而不是“模块”表中的所有行。
【问题讨论】:
-
active在所需输出中是如何计算的? -
您能提供更多信息吗?您如何尝试检索数据?你在使用 SQL,如果是,它是什么?
-
active 来自“user_module”表。如果该用户的“user_module”表中没有module_id,则活动应该为0。我将稍微编辑我的问题以澄清。