Разделение запросов MySQL UNION - PullRequest
1 голос
/ 20 ноября 2011

У меня есть этот запрос, который использует 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 или контактах.user_2 ?Может быть, путем изменения запроса, или если я могу использовать некоторые , если операторов в представлении?

Заранее спасибо

Джордж

Ответы [ 2 ]

2 голосов
/ 20 ноября 2011

да, вы можете добавить другое поле для выбора, которое вы можете распознать как (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 голос
/ 20 ноября 2011

Я обычно использую:

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

, затем используйте $ id в запросе.Читает чище и, по крайней мере, на MySQL, если запрос не выполняется, в нем указывается значение $ id.Никогда раньше не пытался вызвать сеанс в запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...