2012-07-29 85 views
3

我正在寻找一个想法或最佳实践来执行以下:不同的MySQL基于用户级别联接查询

我有表: profile包含基本信息(ID,电子邮件,传球,LVL) profile_user包含(PID,姓名,年龄等。) profile_mod包含(PID,COM​​PANY_NAME,金钱等)

,你可以看到,我会做左连接两个表来获取全部信息,但连接将全部基于属性lvl。如果lvl = 1,它将在profile_user上加入并且lvl = 2将在profile_mod上执行加入。

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

回答

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_modprofile_user字段将填充和值的值将是NULL

同样地,如果是lvl2,对于profile_user字段的值将是NULL,但在profile_mod值将被填充。

+0

我怎么能自动省略选定的属性,而不是将它们作为NULL值? – fawzib 2012-07-29 11:25:08