Я застрял с этой проблемой на некоторое время. Сначала я объясню структуру таблицы
В моей системе четыре таблицы
Домен
Columns:
DomainID (primary key)
DomainName
Data:
DomainID DomainName
1000 Google.com
2000 mySql.com
WebPage
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 (PluginsType, который можно добавить на веб-страницу)
В этой таблице перечислены типы плагинов, доступные для каждого домена
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)
Теперь, что мне нужно, с учетом идентификатора домена, я хочу получить список всех доступных плагинов веб-страниц, чтобы плагин не повторялся более чем на одной веб-странице.
Другими словами, комбинация веб-страницы и плагина для каждого плагина, чтобы плагин не повторялся более чем на одной веб-странице.
Так для домена 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).
Есть еще одна вещь, предпочтительно выбирать веб-страницу только с одним плагином. Но я заинтересован в поиске решения без этого предпочтения, позже, возможно, я смогу улучшить решение.