我有以下表格:计数数量
conversation_folder {
conversation_folder_id,
user_id
...
}
conversation_user {
conversation_id
owner_user_id
is_unread
}
conversation_folder_relations {
conversation_id
conversation_folder_id
user_id
}
我想选择记录了conversation_folder
表的,不过,我想包括特定的user_id
(conversation_user
表中的owner_user_id
)在文件夹中未读取的会话数。
这是可能的一个查询,或者我将不得不获取文件夹,然后运行另一个查询来获得未读的计数?
编辑:
为了提高显而易见,这个查询提供所需的结果,但它涉及到多个子查询,这是远远不够理想:
SELECT conversation_folder.*,
(
SELECT COUNT(conversation_id)
FROM conversation_user
WHERE conversation_id IN (
SELECT conversation_id
FROM conversation_folder_relations
WHERE conversation_folder_relations.user_id = conversation_user.owner_user_id
AND conversation_folder_id = conversation_folder.conversation_folder_id
)
AND is_unread = 1
) AS unread_count
FROM conversation_folder
WHERE conversation_folder.user_id = ?
一些样品表数据和预期的结果会很好。 – jarlh
这里是一个使用sqlfiddle http://sqlfiddle.com/#!9/18cc8/7 –