Я создаю веб-приложение codeigniter, где пользователи могут добавлять друг друга в список контактов.
Таблица выглядит следующим образом:
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_1` int(11) NOT NULL,
`user_2` int(11) NOT NULL,
`accepted` tinyint(2) NOT NULL,
PRIMARY KEY (`id`)
ИД пользователя для пользователяпри этом запрос на добавление контакта всегда сохраняется в столбце user_1 .Другие пользователи ИД пользователя хранятся в user_2 . user_2 затем должен принять запрос, и столбец «принято» обновляется до 1 .
Я хочу перечислить все принятые контакты (ГДЕ принято = 1) в html-таблице, а запросы контактов (принято = 0) в другой.Мой вопрос: как я могу сделать запрос MySQL, который выбирает все строки и просто получить идентификатор пользователя из контакта?Это проблема, поскольку они могут быть либо в user_1 , либо в user_2 (в зависимости от того, были ли они запрошены или приняты).
Должен ли я каким-либо образом изменить таблицу БД надостичь этого.Или я мог бы сделать запрос (предпочтительно активные rcords), который выполняет это?
Любая помощь приветствуется
Заранее спасибо
Джордж
Обновление:
Итак, окончательный запрос выглядит так:
SELECT DISTINCT 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.id, users.username, contacts.accepted
FROM users
LEFT JOIN contacts ON users.id = contacts.user_2
WHERE user_1 = ' . $this->session->userdata('user_id')
И работает точно так, как я описал:)