有人可以向我提出有关如何解决以下问题的想法:
我的数据库中有图片、视频和标签。标签可以与图片和视频相关联。我必须查询数据库以获取在 7 天或更早之前修改的标签 ID 和计数,并按它们与图片和视频资产的关联计数对它们进行排序。
所以这个想法是,最后我可以输出过去 7 天内与图片或视频关联最多的标签。我用我拥有的字段写下了数据库结构
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 的样本都会很棒。让我知道我是否足够清楚。