Я работаю над таблицей, которая похожа на переполнение стека. Здесь хранятся вопросы, ответы и комментарии.
Я попытался создать запрос, который получает данные следующим образом. Вопрос и его комментарии и ответ на этот вопрос и комментарии для ответа.
Я не знаю, как получить всю эту информацию из той же таблицы. Если бы они были в разных таблицах, это было бы легко. Я попытался выполнить внутреннее объединение и использовать подзапрос, но они не дали мне правильный вывод.
Я хочу использовать этот запрос в spring-data-jpa. Сначала я попытался сделать это с помощью jpa, но это не работает. Я думаю, что этот запрос более сложен, чтобы создать его напрямую с помощью spring-data-jpa.
Это важные поля моей таблицы в MySQL:
id | content_id | content_type_id | subject | body | tags | user_id | dtype
content_id использует для ответов икомментарии и показывает идентификатор вопроса, к которому принадлежит ответ или комментарий. dtype указывает тип записи, в которой есть одно из значений вопросов, ответов или комментариев.
это запросы, которые я пытался выполнить:
select distinct T1.`content_id`,
(Select `body`,`dtype` from content As T3 where T3.content_id = 19 and
T3.content_type_id = 2),
(Select `body`,`dtype` from content As T4 where T4.content_type_id = 3 and
T4.content_id = T3.id)
from content as T1
SELECT a.body, a.user_id, a.dtype, c.body, c.user_id, c.dtype FROM content a
JOIN content c ON a.id = c.content_id WHERE a.content_id = 19
это метод, который я пытался использовать вspring boot
public Question getQuestionAnswerAndComment(Question question){
List<List> result = new ArrayList<>();
Optional<Question> ques = getQuestion(question); // getting one question by id
result.add(questionRepository.findByContentTypeIdAndContentId(3, question.getId())); //getting comments of the question (3 means comment)
Answer ans = questionRepository.findByContentTypeIdAndContentIdAnswer(2, question.getId()); // getting answers of the question (2 measn answer)
}
проблема здесь в том, что третий вызов метода выбирает все ответы на вопрос и возвращает список, поэтому я не могу использовать его вывод для поиска комментариев для конкретного ответа.
Теперь, что я должен сделать, чтобы получить желаемые данные из базы данных, я должен использовать методы spring-data-jpa или создать собственный запрос и затем вызвать его.
Желаемый результат:
Вопрос
---- Комментарии к вопросу
Первый ответ на вопрос
---- Комментарии к первому ответу
Второйответ на вопрос
---- Комментарии ко второму ответу