숨겨진 페이지 (visible
= "n")를 제외하고 최근 updated
(필드) pages
(테이블)을 선택하려고합니다. 그러나 나는 페이지를 slug
으로 그룹화하고 싶기 때문에 슬러그 당 하나의 결과 만 얻습니다.SQL LEFT JOIN 문제
다음 쿼리는 작동하지만 모든 슬러그에 대해 최신 업데이트 된 페이지 만 선택합니다. 페이지가 숨겨져 있으면 결과에서 제거됩니다. (이 경우에는 이 '보이지 않는 한 표시 것을 그 슬러그와 최신 업데이트 된 페이지입니다.
는SELECT `p1`.`id` AS `pID`, `p1`.`slug` AS `url`, `p1`.`revision`, `p1`.`title`, `p1`.`published`, `p1`.`updated`, (SELECT COUNT(*) FROM `pages` WHERE `slug` = `url` AND `visible` = "y") AS `revisionCount`, (SELECT COUNT(*) FROM `tests` WHERE `pageID` = `pID`) AS `testCount`
FROM `pages` `p1`
LEFT JOIN `pages` `p2` ON `p1`.`slug` = `p2`.`slug` AND `p1`.`updated` < `p2`.`updated`
WHERE `p2`.`updated` IS NULL AND `p1`.`visible` = "y"
ORDER BY `p1`.`updated` DESC
각 슬러그에 대해 최신의 업데이트되고 표시되는 페이지를 원하십니까? 업데이트 된 날짜 또는 int 같아요? – MrSoundless
@MrSoundless : 업데이트 된 날짜입니다. – naburi