У меня есть таблицы MYSQL следующим образом
user TABLE {id INT}
profile TABLE {user_id INT, facebook_id varchar(50)}
messages TABLE {id INT, message TEXT, from_id INT, type enum('main','facebook'}
messages_to TABLE {user_id varchar(50), message_id INT}
profile.user_id REFERS To user.id
- the messages_to.message_id refers to the messages.ID column.
- the messages_to.user_id refers to profile.user_id IF messages.type = 'main' BUT
if message_type = 'facebook' THEN messages_to.user_id REFERS to profile.facebook_id
Я хочу сделать запрос на объединение, который в основном выбирает все сообщения для конкретного человека, но дело в том, что messages_to.user_id может ссылаться на the person's facebook ID or the person's ID (a reference to user.id column).
Таким образом, в основном запрос должен работать следующим образом
- , он должен выбрать все сообщения в таблице сообщений, и если
messages.type = 'facebook'
проверяет, равен ли messages_to.user_id идентификатор человека FACEBOOK.(обратите внимание, что в таблице messages_to хранятся получатели для каждого идентификатора сообщения) - НО, если
messages.type = 'main'
проверяет, равняется ли messages_to.user_id
person's USER ID (USER.id)
Возможно ли это сделатьmysql join query
для этого эффективно?
Таблица messages_tos хранит ВСЕХ получателей для каждого сообщения в таблице MESSAGES.МОЖЕТ БЫТЬ БОЛЬШЕ, ЧЕМ ОДИН ПОЛУЧАТЕЛЬ за сообщение.