배경
의견 표가 있습니다. 각 주석은 '리드'테이블 또는 '프로드'테이블의 특정 행에 속합니다. 'lead'및 'prod'테이블에는 각 행에 대해 여러 주석이있을 수 있습니다. 또한 각 행에 대해 동일한 'kstatus'와 함께 여러 주석이있을 수 있습니다.MySQL SELECT (그룹 내 집계)에 대한 도움이 필요합니다.
comments
INT id /* primary key */
ENUM('lead', 'prod') type /* tells me whether the comment belongs to a row in the lead table or the prod table */
INT fid /* foreign key, refers to the id column in either the lead or prod table */
MEDIUMTEXT comment /* the comment itself */
INT timestamp /* when the comment was written, i.e. 1300530201 */
INT kstatus /* foreign key, refers to the id column in the kstatus column */
lead
INT id
...
prod
INT id
...
kstatus
INT id
...
타입 = '우세'및 FID = 105에 코멘트 타입 = '자극'와 lead.id = 105 주석이 리드 로우를 참조하여 FID = 105의 행을 의미 prod.id와 자극 = 105
질문
내가 어떤 kstatus으로 '리드'테이블의 각 행에 대해 주어진 (있는 경우, 소인 기준) 최초의 주석을 선택합니다 (예를 들어 14).
결과가 너무 적은 결과를 나타내는 내 시도입니다. 어쩌면 fid가 lead.id를 참조하고 fid가 prod.id를 참조했기 때문일 수 있습니까?
SELECT C1.*
FROM comments AS C1
LEFT JOIN comments AS C2 ON (C1.timestamp > C2.timestamp AND C1.fid = C2.fid)
WHERE C2.timestamp is NULL
AND C1.type = 'lead'
AND C1.kstatus = 14
GROUP BY C1.fid
올바르게 이해하면 기존의 각 kstatus에 대한 첫 번째 의견을 제공합니다. 그건 내가 원하는 것이 아니다. 특정 kstatus (예 : 14)가있는 각 리드에 대한 첫 번째 의견을 원합니다. –
@arex - 댓글을 올리는 동안 답변이 업데이트되었습니다. 'group by fid' => 리드 당 – RichardTheKiwi
질의에는'and kstatus = 14'가 포함되어있어 각 리드를 줄 수는 없으므로 구체적인 결과를 얻을 수 있습니다. 쿼리를 실행 했습니까? – Pentium10