사용자가 감사를 위해 이미지를 업로드 할 수있는 웹 사이트가 있습니다. 사용자는 먼저 auditID에 대한 난수와 감사 테이블에 저장된 dateStart (사용자가 DATETIME이 아닌 DATE로 저장되는 날짜)를 갖는 감사를 작성합니다. 그런 다음 업로드 할 이미지를 선택하고 ID (imageID)와 서버의 파일 경로 (imageLocation) 및 이미지 테이블에 저장되는 '표준'유형을 지정합니다. auditID는 이미지 테이블의 외래 키입니다.mysql 그룹을 사용한 후 가장 높은 ID 값을 얻습니다.
같은 이미지를 다른 감사에 다시 사용하면 이전과 동일한 값, 새로운 imageID 및 새 auditID가있는 새로운 dateStart가있는 데이터베이스의 다른 항목이 만들어집니다.
이러한 이미지는 imageLocation으로 이미지를 그룹화하는 스크립트를 사용하여 표시되므로 MAX (dateStart)를 사용하여 마지막으로 사용한 감사 이름과 함께 각 이미지의 인스턴스 하나가 표시됩니다.
사용자가 동일한 dateStart를 가진 여러 감사에 대해 동일한 이미지를 사용하지 않는 경우이 방법이 유용합니다.이 경우 동일한 날짜의 각 감사마다 한 번씩 여러 번 표시됩니다. 가장 쉬운 방법은 dateStart를 date에서 datetime으로 변경하는 것이지만 실행 가능한 옵션이 아니기 때문에 차선책은 MAX (dateStart)뿐만 아니라 MAX (imageID)를 찾는 것입니다.
GROUP 다음에 SORT BY i.imageID LIMIT 1 DESC를 추가하려고 시도했지만 각 이미지의 최신 인스턴스보다는 하나의 이미지 만 반환합니다. 이것은 내가 지금까지 무엇을 가지고
...
SELECT i.imageID AS newest_image,
i.userID AS image_userID,
i.auditID AS image_auditID,
i.type AS image_type,
i.imageLocation AS location,
a.*
FROM image i
JOIN audit a
ON i.auditID = a.auditID
JOIN
(
SELECT i.imageLocation, MAX(a.dateStart) MaxDate
FROM image i
JOIN audit a
ON i.auditID = a.auditID
WHERE i.userID = '$id'
AND i.type = 'standard'
GROUP BY i.imageLocation
)
g ON g.MaxDate = a.dateStart
AND g.imageLocation = i.imageLocation
WHERE i.userID = '$id'
AND i.type = 'standard'
AND i.imageLocation NOT LIKE '%standard_examples%'"
나는 같은 이미지가 같은 날짜에 두 번 이상 사용하는 경우 그 다음, 지금 않는 동일한 결과를 반환하지만 싶습니다 I 가장 높은 imageID를 가진 이미지 인스턴스를 원한다.
이 정보가 충분하기를 바란다면 테이블이 복잡하기는하지만 필요하다면 샘플과 데이터를 제공 할 수는 있지만 시간이 걸릴 것입니다.
도움이 될 것입니다.
안녕하세요, 고마워요.하지만 'SQL 구문에 오류가 있습니다. 'WITH images near (SELECT imageLocation, MAX (imageID) AS newest_imageID'at line 1 '근처에서 사용할 정확한 문법은 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오. – tatty27
MySQL이 WITH 절을 지원하지 않는 것 같습니다 – tatty27
Perfect 고마워, 하나의 경미한 찬사, 선택 하위 쿼리에서 FROM 절에 'image i'를 추가해야했지만 지금은 대단히 감사합니다. – tatty27