不同的mysql根据用户级别加入查询

时间:2012-07-29 02:28:44

标签: php mysql optimization left-join

我正在寻求一个想法或最佳实践来执行以下操作:

我有桌子: profile包含基本信息(id,email,pass,lvl) profile_user包含(pid,名称,年龄等) profile_mod包含(pid,company_name,money等)。

你可以看到我会在两个表上保持连接以获取整个信息,但是连接将全部基于属性lvl。如果lvl = 1,它将在profile_user上保留jojo,而lvl = 2将在profile_mod上执行连接。

我的问题是,我不想对每个查询执行检查以获取lvl,然后在其他两个表上执行leftjoin。我想知道这种情况是否有最好的做法。

1 个答案:

答案 0 :(得分:3)

你可以这样做:

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

如果lvl1,则profile_user中的字段值将填充,profile_mod中的值将为NULL

同样,如果lvl2profile_user中字段的值将为NULL,但profile_mod中的值将会填充。