MySQL UNION查询分离

时间:2011-11-20 15:01:56

标签: php mysql codeigniter

我有这个使用UNION的查询:

$this->db->query('
        SELECT DISTINCT users.user_pic, users.id, users.username, contacts.accepted 
        FROM users
        LEFT JOIN contacts ON users.id = contacts.user_1
        WHERE contacts.user_2 = ' . $this->session->userdata('user_id') . '
        UNION DISTINCT
        SELECT DISTINCT users.user_pic, users.id, users.username, contacts.accepted 
        FROM users 
        LEFT JOIN contacts ON users.id = contacts.user_2
        WHERE user_1 = ' . $this->session->userdata('user_id')
);

有没有办法查看 contacts.user_1 contacts.user_2 中是否遇到会话'user_id'?也许通过更改查询,或者如果我可以在视图中使用一些 if 语句?

提前致谢

乔治

2 个答案:

答案 0 :(得分:2)

是的,您可以添加另一个要选择的字段,您可以识别为(1,2)

$this->db->query('
        SELECT 1 as table_id,DISTINCT users.user_pic, users.id, users.username, contacts.accepted 
        FROM users
        LEFT JOIN contacts ON users.id = contacts.user_1
        WHERE contacts.user_2 = ' . $this->session->userdata('user_id') . '
        UNION DISTINCT
        SELECT 2 as table_id,DISTINCT users.user_pic, users.id, users.username, contacts.accepted 
        FROM users 
        LEFT JOIN contacts ON users.id = contacts.user_2
        WHERE user_1 = ' . $this->session->userdata('user_id')
);

答案 1 :(得分:1)

我通常使用:

$ id = $ this-> session-> userdata('user_id');

然后在查询中使用$ id。至少读取更清洁和MySQL,如果查询失败,它会列出$ id的值。从未尝试过在查询中调用会话。