有人可以告訴我有關如何解決以下問題的想法:複雜的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的樣本都會很棒。如果我讓自己清楚,請告訴我。