我有这个使用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 语句?
提前致谢
乔治
答案 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的值。从未尝试过在查询中调用会话。