Mysql:左边连接变量表

时间:2013-08-22 10:32:12

标签: php mysql join conditional-statements

我遇到了复杂的SQL查询问题。

我有3张桌子: 用户, user_type1, user_type2

我正在尝试根据用户的类型选择用户的详细信息。 我尝试使用CASE为LEFT JOIN动态选择表名,但是我失败了。 我也尝试使用UNION,但似乎列必须相同。

唯一可行的方法是连接两个表,但结果还包含来自错误表的所有空值...

我正在寻找摆脱这些错误字段的方法,或者只为好桌子做LEFT JOIN。

这是我目前的代码:

SELECT
    user.*,
    user_type1.*,
    user_type2.*
FROM user
LEFT JOIN user_type1
    ON user_type1.user_id = user.id
LEFT JOIN user_type2
    ON user_type2.user_id = user.id
AND user.id = 1

通常我只做简单的查询,所以我有点困惑。谢谢,如果你能帮助我。

编辑: 主表是用户,只有2个字段:ID和Type。

其他表包含有关用户的详细信息。 user_type1适用于人。字段是姓名,年龄......

user_type2适用于公司。这些字段是姓名,法律形式,员工人数......

所以我只知道用户表中的ID,我需要获取好表的字段。

如果user.id为1且user.type为type1,我希望mysql从user_type1表中获取所有字段......

2 个答案:

答案 0 :(得分:2)

你可以试试这个: -

select * 
from user, user_type1, user_type2 
where user_type1.user_id = user.id and user_type2.user_id = user.id AND user.id = 1

答案 1 :(得分:0)

然后您必须选择非空的列:

SELECT
    user.*,
    user_type1.*,
    user_type2.*
FROM user
LEFT JOIN user_type1
    ON user_type1_id = user.id
LEFT JOIN user_type2
    ON user_type2.user_id = user.id
AND user.id = 1
AND table.column_name IS NOT NULL