누군가 다음 문제를 해결하는 방법에 대한 아이디어를 던질 수 있습니까?복잡한 SQL 쿼리 (제안 필요)
내 데이터베이스에 사진, 비디오 및 태그가 있습니다. 태그는 사진과 비디오에 연결될 수 있습니다. 나는 데이터베이스에 태그 ID와 7 일 이전에 수정 된 수를 계산해야하며 사진 및 비디오 자산에 대한 연결 수로 정렬해야합니다.
결국 아이디어는 지난 7 일 동안 사진이나 동영상과 관련된 태그를 출력 할 수 있다는 것입니다. 나는 필드가있는 DB 구조를 적어 둔다.
VIDEO
ID
PICTURE
ID
PICTURE_ATTRMAPPING
CS_OWNERID (ID of picture)
CS_ATTRID (will store ID of the tag attribute (picture_tag or video_tag))
ASSETVALUE (will store ID OF THE associated tag)
VIDEO_ATTRMAPPING
CS_OWNERID (ID of video)
CS_ATTRID (will store ID of the tag attribute (picture_tag or video_tag))
ASSETVALUE (will store ID OF THE associated tag)
TAG
ID
UPDATEDATE
ATTRIBUTES (picture_tag attribute ID is stored here)
ID
NAME
우리는 태그, 비디오, 그림 및 속성이 별도의 테이블에 저장되어있는 것을 볼 수있다. VIDEO/PICTURE_ATTRMAPPING 테이블에 CS_ATTRID 열의 비디오 또는 그림 태그 속성 ID 및 ASSETVALUE 열의 태그 ID가있는 레코드가 있으면 태그가 비디오 또는 그림에 의해 참조된다는 것을 알 수 있습니다 (즉, 비디오/그림에 태그 연결이 있음).
하위 쿼리를 사용하여 쿼리를 수행한다고 가정하므로 하위 작업에서이 작업을 중단하고 필요한 모든 정보를 얻는 방법을 알아 냈습니다.
확실히 태그의 ID 비디오 속성과 그림 개체를 얻을 수있을 것이다 : 또한
SELECT id FROM ATTRIBUTES WHERE NAME = 'picture_tag' OR NAME = 'video_tag'
내가 옛날 n은 태그를 조회 할 수있는 방법의 예 :
SELECT id FROM TAG WHERE updateddate BETWEEN TO_DATE('2013-08-20 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND CURRENT_DATE
이것은 복잡한 것처럼 보이지는 않지만 전체 쿼리가 어떻게 나타나고 시작해야하는지에 대해서는 잘 모르겠습니다. 누군가 아이디어 나 표본을 던질 수 있습니까?
나는 Oracle을 사용하고 있지만 mysql도 잘 알고 있으므로 DBMS의 샘플도 훌륭합니다. 내가 나 자신을 분명히했는지 알려줘. 지난 7 일 업데이트 된