具有条件连接建议的SQL分组表结构

时间:2012-03-05 00:54:20

标签: sql join

我有3张桌子

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列中存储StoryId或PhotoId,并在ItemType列中存储“Story”或“Photo”。

当我编写查询以获取组的内容时,我应该添加一个条件连接吗?即;如果ItemType是“Story”,则从Story表加入,Else Join from Photos表?因为同一故事ID和PhotoId作为两个表中的标识列存在

处理此方案的最佳方法是什么?我应该创建2个单独的表格,例如GroupPhotos(GroupId,PhotoId)GroupStories(GroupId,StoryId)吗?

1 个答案:

答案 0 :(得分:2)

  

处理此方案的最佳方法是什么?我应该创建2个单独的表,如GroupPhotos(GroupId,PhotoId)和GroupStories(GroupId,StoryId)?

是的,确实。

然后你就做组LEFT JOIN GroupPhotos LEFT JOIN GroupStories