모든 사용자 질문과 모든 질문에 대해 데이터베이스에서 3 개의 대답을 가져 오는 쿼리를 작성해야합니다. 이 쿼리는 가능한 한 효율적이어야합니다.1 개의 단일 쿼리로 질문과 답변 받기
questions:
id
user_id
title
date_created
date_updated
answers:
id
question_id
user_id
body
date_created
내가 한 단일 쿼리를 수행 할 수 있습니다
나는 테이블이? 기본적으로 질문을 표시하고, 사용자 테이블과 조인하여 사용자 이름을 얻고, 질문에 대한 3 개의 대답을 표시하고, 각 대답에 대해 포스터의 사용자 이름을 표시해야합니다.은 내가 DIT는이 같은 것입니다 :
SELECT questions.*, GROUP_CONCAT(answers.id) as answers
FROM (questions)
JOIN users ON users.id = questions.user_id
LEFT JOIN answers ON answers.question_id = questions.id
WHERE questions.user_id = '1'
GROUP BY questions.id
ORDER BY questions.date_updated desc
LIMIT 3
하지만이 완성되지도 잘 작동하지 않습니다.
이 방법이
사용 크로스가 적용됩니다 바깥 쪽이 확실하지 않은 경우에 적용 사용 'GROUP_CONCAT'을 피하려면 ...해야합니다. :-) – Smandoli
나는 하나의 쿼리를 만들기 위해 그룹 concat을 시도했다. 왜냐하면 나는 많은 질문과 많은 대답을 가진 질문을 가지고있다. – vsergiu
응답 텍스트에 사용자 이름을 포함시키는 요구 사항은'CONCAT' 문제를 이용한다. 더 자연스러운 방법이 있습니다. 즉, 쿼리 내에서 쿼리 할 수 있습니다. 이것은 여전히 "단일 쿼리"라고 불릴 것입니다. – Smandoli