Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/141.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 server 基于联接合并两个表-SQL Server 2012_Sql Server - Fatal编程技术网

Sql server 基于联接合并两个表-SQL Server 2012

Sql server 基于联接合并两个表-SQL Server 2012,sql-server,Sql Server,我的第一张桌子 select * from dbo.tblusertasks id pagename search _update _delete _insert 1 CustomerMaster 0 0 0 0 2 OrganizationMaseter 0 0 0 0 3

我的第一张桌子

select * 
from dbo.tblusertasks

   id   pagename              search    _update     _delete   _insert
    1   CustomerMaster          0          0           0         0
    2   OrganizationMaseter     0          0           0         0
    3   Vendor/SupplierMaster   0          0           0         0
我的第二张桌子

select * 
from dbo.tblpages

id  pagenameid  userid  createdby   search  _update _delete _insert
1   1             1        1          1        1       1       1
2   2             1        1          1        1       1       1
我想合并这两个,并需要作为结果

id  pagename               search   _update _delete _insert
1   CustomerMaster           1         1       1      1
2   OrganizationMaseter      1         1       1      1
3   Vendor/SupplierMaster    0         0       0      0
我尝试过这个查询,但它不起作用

SELECT  
    pg.id, pg.[pagename], tblp.[search],tblp.[_update] , 
    tblp.[_delete], tblp.[_insert] 
FROM 
    tblpages pg 
LEFT JOIN 
    [tblusertasks] tblp ON tblp.pagename = pg.id 
WHERE
    tblp.userid = 1
它正在返回(我尝试了left和right join,但仍然返回相同的结果):


SIcne你说你已经尝试了左连接和右连接,但是它不起作用。更改表arounf也没用。您需要执行以下操作:

SELECT pg.id,
       pg.[pagename],
       tblp.[search],
       tblp.[_update],
       tblp.[_delete],
       tblp.[_insert]
FROM [tblusertask] tblp
     LEFT JOIN tblpages pg
        ON tblp.ID = pg.pagenameid
这应该有用。

希望这有助于。。。 这使您可以灵活地按页面名进行分区。。。计数、总数等

SELECT pagename,
    T.pagenameid,
    ISNULL(T.search, 0) AS search,
    ISNULL(T._update, 0) AS _update,
    ISNULL(T._delete, 0) AS _delete,
    ISNULL(T._insert,0) AS _insert
FROM
(
SELECT 
    MAX(U.ID) OVER (PARTITION BY pagename) AS pagenameid,
    MAX(U.search) OVER (PARTITION BY pagename) AS search,
    MAX(U._update)  OVER (PARTITION BY pagename) AS _update,
    MAX(U._delete)  OVER (PARTITION BY pagename) AS _delete,
    MAX(U._insert)  OVER (PARTITION BY pagename) AS _insert
FROM 
    tblusertasks U
LEFT JOIN   
    tblpages P ON U.id=P.pagenameid
)T
INNER JOIN tblusertasks UT ON UT.id=T.pagenameid
结果


删除条件tblp.userid=1的位置上的零件不应该是“on tblp.id=pg.id”吗?Pagename包含字符串和pg.id号。这可能是问题所在……我尝试过,但当我添加where条件时,它不会返回所需的输出以及您在帖子中的集合,您不应该需要where子句。它用于将来的使用,就像当我有多个用户时,然后Ex userid 2、3等,只要用户在一个表中,而不是在另一个表中,联接将返回该值。这个连接当前从tblpages中回调tblusertask中的所有内容,并且只回调与tblusertask中匹配的值key@AkhilRJ这与您想要的输出完全匹配。。。您能解释一下缺少了什么吗?search、update、delete和insert列是位类型的,因此MAX()对它无效
SELECT pagename,
    T.pagenameid,
    ISNULL(T.search, 0) AS search,
    ISNULL(T._update, 0) AS _update,
    ISNULL(T._delete, 0) AS _delete,
    ISNULL(T._insert,0) AS _insert
FROM
(
SELECT 
    MAX(U.ID) OVER (PARTITION BY pagename) AS pagenameid,
    MAX(U.search) OVER (PARTITION BY pagename) AS search,
    MAX(U._update)  OVER (PARTITION BY pagename) AS _update,
    MAX(U._delete)  OVER (PARTITION BY pagename) AS _delete,
    MAX(U._insert)  OVER (PARTITION BY pagename) AS _insert
FROM 
    tblusertasks U
LEFT JOIN   
    tblpages P ON U.id=P.pagenameid
)T
INNER JOIN tblusertasks UT ON UT.id=T.pagenameid