Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于复杂逻辑的SQL查询(pl/SQL)_Sql_Mysql_Sql Server_Oracle_Plsql - Fatal编程技术网

用于复杂逻辑的SQL查询(pl/SQL)

用于复杂逻辑的SQL查询(pl/SQL),sql,mysql,sql-server,oracle,plsql,Sql,Mysql,Sql Server,Oracle,Plsql,这个问题困扰了我一段时间。首先,我将解释表的结构 我的系统中有四个表 域 网页 插件类型(可添加到网页的插件类型) 此表列出了每个域可用的插件类型 插件:域中的每个网页都可以使用任意数量的插件 现在我想要的是,给定一个域ID,我想要所有可用网页插件的列表,这样插件就不会在多个网页中重复。 换句话说,每个插件的网页插件组合,这样插件就不会在多个网页中重复 所以对于域名1000(google.com) 我想要的结果是 我只选择了5002和5003个网页,因为它们包含了域名1000(google.co

这个问题困扰了我一段时间。首先,我将解释表的结构

我的系统中有四个表

网页

插件类型(可添加到网页的插件类型) 此表列出了每个域可用的插件类型

插件:域中的每个网页都可以使用任意数量的插件

现在我想要的是,给定一个域ID,我想要所有可用网页插件的列表,这样插件就不会在多个网页中重复。 换句话说,每个插件的网页插件组合,这样插件就不会在多个网页中重复

所以对于域名1000(google.com)

我想要的结果是

我只选择了5002和5003个网页,因为它们包含了域名1000(google.com)的所有插件。
还有一件事,最好选择一个只有一个插件的网页。但是我对找到没有这个偏好的解决方案感兴趣,以后也许我可以改进这个解决方案。

你可以从另一个角度来看,因为你要返回每个插件类型的一行,你需要一个域上的所有插件类型,以及一个插件类型插入的示例页面,大致如下:

SELECT  PluginTypeId,
        (
        SELECT  webpageID
        FROM    plugin pi
        WHERE   pi.pluginTypeId = pd.pluginTypeId
                AND webPageID IN
                (
                SELECT  WebPageID
                FROM    WebPage
                WHERE   DomainId = 1000
                )
        ORDER BY
                (
                SELECT  COUNT(*)
                FROM    plugin pc
                WHERE   pc.webpageId = pi.webpageId
                )
        LIMIT 1
        ) AS WebPageId
FROM    Plugin pd
WHERE   WebPageId IS NOT NULL
Select PluginTypeName, 
  (select top 1 WebpageName 
    from WebPage w
      inner join Plugin p on p.WebpageID = w.WebpageID
    where p.pluginTypeID = pt.pluginTypeID) as SampleWebPage
From PluginTypes pt
这将返回如下结果:

searchButton    SearchPage.html
DropDownMenu    SearchPage.html
InteractiveForm null
loginForm       ContactUs.html
lotoutform      Welcome.html             
以上结果(斯维科提交)应该有效,我正在尝试,可能会给出重复的结果。此外,它还按域对结果进行分组。。。下面是一个修改:

Select DISTINCT DomainID, pt.PluginTypeName, 
  (select top 1 WebpageName 
    from WebPage w
      inner join Plugin p on p.WebpageID = w.WebpageID
    where p.pluginTypeID = pt.pluginTypeID) as SampleWebPage
From PluginTypes pt
GROUP BY DomainID, pt.PluginTypeName

您正在寻找“DISTINCT”命令吗?具体针对哪个数据库?语法不是100%相同
          5002 (Welcome.html)     8000 (SearchButton)
          5002 (Welcome.html)     8001 (DropDownMenu)
          5002 (Welcome.html)     8004 (lotoutform)
          5003 (ContactUs.htm)    8003 (loginForm)
SELECT  PluginTypeId,
        (
        SELECT  webpageID
        FROM    plugin pi
        WHERE   pi.pluginTypeId = pd.pluginTypeId
                AND webPageID IN
                (
                SELECT  WebPageID
                FROM    WebPage
                WHERE   DomainId = 1000
                )
        ORDER BY
                (
                SELECT  COUNT(*)
                FROM    plugin pc
                WHERE   pc.webpageId = pi.webpageId
                )
        LIMIT 1
        ) AS WebPageId
FROM    Plugin pd
WHERE   WebPageId IS NOT NULL
Select PluginTypeName, 
  (select top 1 WebpageName 
    from WebPage w
      inner join Plugin p on p.WebpageID = w.WebpageID
    where p.pluginTypeID = pt.pluginTypeID) as SampleWebPage
From PluginTypes pt
searchButton    SearchPage.html
DropDownMenu    SearchPage.html
InteractiveForm null
loginForm       ContactUs.html
lotoutform      Welcome.html             
Select DISTINCT DomainID, pt.PluginTypeName, 
  (select top 1 WebpageName 
    from WebPage w
      inner join Plugin p on p.WebpageID = w.WebpageID
    where p.pluginTypeID = pt.pluginTypeID) as SampleWebPage
From PluginTypes pt
GROUP BY DomainID, pt.PluginTypeName