2012-03-05 31 views
-1

我有3个表有条件SQL分组表结构加入咨询

1)Photos (PhotoId,Title, CreatedById,etc...)

2)Stories (StotyId,StoryDesc,CoverPhotoId,CreatedById,etc...)

3)Groups (GroupId,GroupDesc,CreatedById)

现在我想在那里我可以创建一个表存储组的内容。每个组可以有1或mroe照片和故事。我将如何储存?如果我只用表这样

GroupContents (Id,GroupId,ItemId,ItemType) 

哪里将存储StoryId或PHOTOID在ITEMID列以及将任“故事”或“照片”中的ItemType列。

当我编写一个查询来获取组的内容时,我应该添加一个条件连接吗?即;如果ItemType是“Story”,则从Story表加入,Else从Photos表加入?由于在两个表格

中存在相同的故事ID和PhotoId作为其标识列,因此处理此情形的最佳方法是什么?我应该创建2个独立的表格,如GroupPhotos(GroupId,PhotoId)GroupStories(GroupId,StoryId)

回答

2

处理这种情况的最佳方法是什么?我应该创建像GroupPhotos(GroupId,PhotoId)和GroupStories(GroupId,StoryId)两个独立的表吗?

是的,正好。

然后,你只要做群组LEFT JOIN GroupPhotos LEFT JOIN GroupStories