我正在寻求执行以下操作的想法或最佳实践:
我有以下表格:profile
包含基本信息(id、email、pass、lvl)profile_user
包含(pid、姓名、年龄等)profile_mod
包含(pid、company_name、money 等)
如您所见,我将对两个表进行左连接以获取整个信息,但连接将全部基于属性 lvl。如果 lvl=1 它将在 profile_user 上 leftjoin 而 lvl=2 将在 profile_mod 上执行 join。
我的问题是,我不想对每个查询执行检查以获取 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/