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

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

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

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

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

10-15 20:01