내가해야 할 일은 간단하다. 그러나 3am과 Im은 아마 명백한 것을 멀리 바라보고있다.테이블의 최신 레코드에 어떻게 가입합니까?
간단한 포럼을 코딩합니다. 한 테이블은 포럼 제목, 설명 등을 저장하고 다른 테이블은 게시물을 저장합니다. 포럼 목록에는 모든 포럼의 목록이 표시되며, 각 포럼에서 최신 게시물을 가져 와서 게시 주제, 포스터 및 게시물 ID 및 날짜를 표시하고 싶습니다. 단순한.
유일한 문제는 게시물 테이블에 가입 할 때 테이블의 첫 번째 레코드에 참여하는 것이지 마지막 게시물은 해당 포럼의 마지막 게시물을 나타냅니다.
다음은 "최신"소식 (이제 "첫 번째 소식"으로 작동)에 대한 포럼 + 데이터를 가져 오는 간단한 쿼리입니다.
SELECT forum_title, forum_id, post_subject, post_user, post_id, post_date FROM board_forums
LEFT JOIN board_posts
ON (forum_id = post_parentforum AND post_parentpost = 0)
WHERE forum_status = 1
GROUP BY forum_id
ORDER BY forum_position
어떻게 해결할 수 있습니까?
는 당신이 문제를 언급 기뻐요. MySQL 사용자가 아니기 때문에 GROUP BY를 고치지 않고도 슬라이드 할 수 있다는 것을 깨닫지 못했습니다. 이제 알았어! :) – TML
예프. MySQL은 여러분이하고있는 일을 알고 있고, 단일 값 규칙을 따르고 있다고 믿습니다. SQLite도 같은 동작을합니다. 모호한 열 (그룹당 둘 이상의 값)이있는 조회를 작성하면 RDBMS는 임의로 값을 선택합니다. MySQL은 "첫 번째"행의 값을 행의 물리적 저장 순서대로 선택합니다. 우연히도 SQLite는 "마지막"행의 값을 선택합니다. –
약간의 문제가 있습니다. ID가 가장 큰 post_id가 최신 게시물 일 필요는 없습니다. 새 스레드가 만들어지면 최신 ID를 가지게되며이 경우 예제가 작동합니다. 그러나 더 낮은 ID를 가진 오래된 스레드에서 응답이 이루어지면 더 이상 작동하지 않으며 가장 높은 ID를 가진 therad를 표시합니다. post_date를 기반으로 표시해야합니다. –