【发布时间】:2011-06-12 12:32:52
【问题描述】:
我已经被这个问题困扰了一段时间。首先解释一下表结构
我的系统中有四个表
域
Columns: DomainID (primary key) DomainName Data: DomainID DomainName 1000 Google.com 2000 mySql.com
网页
Columns: WebpageID (primary key) WebpageName DomainID (FK from domain table) Data: 5001 SearchPage.html 1000 5002 Welcome.html 1000 5003 ContactUs.htm 1000 5004 AboutUs.html 1000
PluginType(可以添加到网页的插件类型) 此表列出了每个域可用的插件类型
Columns: PluginType (primary key) DomainID (primary key) PluginTypeName Data PluginTypeID DomainID PluginTypeName 8000 1000 searchButton 8001 1000 DropDownMenu 8002 1000 InteractiveForm 8003 1000 loginForm 8004 1000 LogoutForm
插件:域中的每个网页都可以使用任意数量的插件。
Columns: PluginID (primary key) WebpageID (FK from webpage table) pluginTypeID (FK from plugintype table) Data: pluginID WebpageID(Name) PluginTypeID 10001 5001(SearchPage.html) 8000(SearchButton) 10002 5001(SearchPage.html) 8001(DropDownMenu) 10003 5002 (Welcome.html) 8000 (SearchButton) 10004 5002 (Welcome.html) 8001 (DropDownMenu) 10005 5002 (Welcome.html) 8004 (lotoutform) 10006 5003 (ContactUs.htm) 8003 (loginForm) 10007 5004 (AboutUs.htm) 8002 (loginForm)
现在我想要的是,给定一个域 ID,我想要所有可用网页插件的列表,这样插件就不会在多个网页中重复。 换句话说,每个插件的网页-插件组合,这样插件就不会在多个网页中重复。
所以对于域 1000(google.com)
我想要的结果是
5002 (Welcome.html) 8000 (SearchButton) 5002 (Welcome.html) 8001 (DropDownMenu) 5002 (Welcome.html) 8004 (lotoutform) 5003 (ContactUs.htm) 8003 (loginForm)
我只选择了 5002 和 5003 网页,因为它们包含域 1000(google.com) 的所有插件。 还有一件事,最好选择只有一个插件的网页。但是我有兴趣找出没有这种偏好的解决方案,以后也许我可以改进解决方案。
【问题讨论】:
-
您在寻找“DISTINCT”命令吗?
-
具体针对什么数据库?语法不是 100% 相同
标签: sql mysql sql-server oracle plsql