У меня есть три таблицы в моей базе данных, см. структуру ниже:
пользователи
uid | fname | date_joined
---------------------------------
1 | john | 2013-08-25 01:00:00
2 | rock | 2013-08-26 01:00:00
3 | jane | 2013-08-27 01:00:00
вопросы
qid | uid
----------
1 | 1
2 | 1
3 | 2
4 | 3
5 | 3
6 | 1
7 | 1
8 | 2
9 | 2
подписчики
fid | qid
---------
1 | 2
2 | 1
3 | 2
4 | 1
5 | 2
6 | 3
7 | 2
пользовательская таблица содержит все поля, связанные с пользователем
таблица вопросов содержит все данные, связанные с вопросом, с внешним ключом uid
таблица подписчиков хранит информацию о том, сколько раз последовал вопрос
Я хочу, чтобы мой запрос возвращал следующее:
unique uid,
fname
question count for each user
follower count for each user
Я написал запрос, и он работает нормально и возвращает записи, как я хочу, но количество подписчиков всегда равно 0. Вот мой запрос:
SELECT
u.uid, u.fname, u.date_joined ,
(SELECT COUNT(*) FROM questions WHERE questions.uid = u.uid) AS question_count,
(SELECT COUNT(*) FROM followers WHERE followers.qid IN (
SELECT GROUP_CONCAT(qid) FROM questions WHERE questions.uid = u.uid
)
) AS follow_count
FROM epc_user AS u
ORDER BY follow_count DESC, question_count DESC, date_joined DESC
Я пробовал несколько разных комбинаций, но ни одна из них не сработала, возможно, я пишу неправильный запрос или невозможно использовать подзапрос в другом подзапросе, что бы это ни было. Я просто хочу знать, возможно ли это или нет, и если возможно