我有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 ID。(请注意,messages_to 表存储每个消息 ID 的收件人) - 但是如果
messages.type = 'main'
检查是否messages_to.user_id
等于person's USER ID (USER.id)
是否有可能mysql join query
有效地做到这一点?
messages_tos 表存储了 MESSAGES 表中每条消息的所有收件人。消息的接收者可能不止一个。