我正在寻找执行以下操作的想法或最佳实践:
我有表格:
profile
包含基本信息(id、email、pass、lvl)
profile_user
包含(pid、姓名、年龄等)
profile_mod
包含(pid、company_name、money 等)
如您所见,我将对两个表进行左连接以获取全部信息,但连接将全部基于属性 lvl。如果 lvl=1 它将在 profile_user 上左连接,而 lvl=2 将在 profile_mod 上执行连接。
我的问题是,我不想对每个查询执行检查以获取 lvl,然后对其他两个表执行 leftjoin。我想知道这种情况是否有最佳实践。
最佳答案
你可以这样做:
SELECT *
FROM profile a
LEFT JOIN profile_user b ON a.id = b.pid AND a.lvl = 1
LEFT JOIN profile_mod c ON a.id = c.pid AND a.lvl = 2
如果 lvl
为 1
,profile_user
中的字段值将被填充,profile_mod
中的值将是NULL
.
同样,如果 lvl
为 2
,则 profile_user
中字段的值将为 NULL
,但profile_mod
将被填充。
关于php - 基于用户级别不同的mysql join查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11706175/