【问题标题】:Different mysql join query based on user level基于用户级别的不同mysql连接查询
【发布时间】:2012-07-27 05:11:40
【问题描述】:

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

我有桌子: 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。我想知道这种情况是否有最佳实践。

【问题讨论】:

    标签: php mysql optimization left-join


    【解决方案1】:

    你可以这样做:

    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

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

    【讨论】:

    • 我怎样才能自动省略选定的属性而不是将它们作为 NULL 值?
    猜你喜欢
    • 2012-08-27
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2015-05-23
    • 2023-03-20
    • 2012-02-07
    • 1970-01-01
    相关资源
    最近更新 更多