php - 基于用户级别不同的mysql join查询

标签 php mysql optimization left-join

我正在寻找执行以下操作的想法或最佳实践:

我有表格: 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

如果 lvl1profile_user 中的字段值将被填充,profile_mod 中的值将是NULL.

同样,如果 lvl2,则 profile_user 中字段的值将为 NULL,但profile_mod 将被填充。

关于php - 基于用户级别不同的mysql join查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11706175/

相关文章:

php - 如何从给定的行号开始选择 MySQL 中的行?

php - echo 允许空值的日期变量的 fatal error

php - 在 Laravel 中咨询多对多关系

c# - Context.User 在 Asp.net MVC 应用程序中通过 windows auth 在 Application_AuthenticateRequest 中为 NULL

c - 查找大阶乘中特定数字的计数

c++ - 编译成更快的代码 : "n * 3" or "n+(n*2)"?

php - 检查重复条目与使用 PDO errorInfo 结果

php - 字段列表中的列 'id' 在 YII 中不明确

mysql - 获取用户的前 5 条记录,平均记录并按平均值排名

python - Python 中的快速、小型和重复矩阵乘法