Я строю простую систему вопросов/ответов с использованием php и mysql.
То, что я пытаюсь сделать, это показать все вопросы, среди которых есть их ответы и отметка времени последнего ответа.
Вот структура моих таблиц:Выбор строк, объединяющих Join & Count
Table 'Discussion':
id | title | description | user_id | timestamp
--------------------------------------------------------------------------------
Table 'Reply':
id | reply_text | user_id | discussion_id | timestamp
Что я делаю сейчас, это выбрать обсуждения и получить ответы рассчитывать так:
SELECT
d.*,
count(dr.id) AS replies_count
FROM discussion d
LEFT JOIN discussion_reply dr ON d.id = dr.discussion_id
GROUP BY d.id
Это возвращает строки как id | title | description | user_id | timestamp | replies_count
Затем (через PHP) я просматриваю результаты и запрашиваю БД, чтобы получить ответ с самой последней (максимальной) меткой времени для каждого обсуждения.
Итак, для каждой строки, возвращаемой первым запросом, создается новый запрос.
Есть ли способ получить всю необходимую мне информацию, просто выполнив один запрос?
Как изменить свой первоначальный запрос таким образом, что он возвращает:
идентификатор | название | описание | user_id | временная метка | replies_count | latest_reply_timestamp
Спасибо заранее
Спасибо, что ответило @ 491243. Первые мысли здесь, похоже, не возвращают обсуждения без ответов. Он также не вычисляет количество ответов, но я думаю, что это может быть исправлено. – CrisDeBlonde
см. Мой обновленный ответ. –
Большое спасибо, я проверю его сейчас :) – CrisDeBlonde