MS SQL Server查询将多行合并为一个

时间:2017-08-29 18:50:06

标签: sql-server

尝试为人员建模的数据库编写查询。这些人在组织中担任职务,因此他们在职位表中有多个条目。我还加入了包含电子邮件,地址和电话信息的表格。

我的原始查询与此类似。

SELECT 
    P.ID
    , N.FIRST
    , N.MIDDLE
    , N.LAST
    , A.AD1
    , A.AD2
    , A.AD3
    , A.CITY
    , A.STATE
    , A.ZIP
    , A.COUNTRY
    , PH.NUMBER
    , PH.TYPE
    , E.TYPE
    , E.ADDRESS
FROM
    PERSON AS P
    JOIN NAME AS N ON P.ID=N.ID,
    JOIN ADDRESS AS A ON P.ID=A.ID,
    JOIN PHONE AS PH ON P.ID=PH.ID,
    JOIN EMAIL AS E ON P.ID=E.ID

我想将POSITION表加入到这个查询中,但是我希望每个表都能使原始查询为POSITION表中的每一行都有一个单独的行而不是连接从POSITION开始追加到查询行的行。

查询位置表只是针对第一个查询返回的每一行select * from Position as Pos where Pos.ID={P.id},其中P.ID来自第一个查询。

正常结果应该是这样的:

enter image description here 您可以考虑如何使用订单上的商品加入订单记录。我认为这应该是一个联盟。

但是当我加入位置表时我得到的是这样的:

enter image description here

这可能吗?一直在寻找。

1 个答案:

答案 0 :(得分:0)

试试这个,不确定连接条件和列名,假设它如下所示:

个别列的更新 - 假设每个人只有两个职位名称

  var sockets = require('../utilities/socket'); 
  var authenticationMiddleware = 
  require('../middlewares/authentication.js');
  var companyModel = require('../models/company.js');

var getCompanyProfile = function(router){

  router.post('/api/v1/profile/fetchCompany', authenticationMiddleware.isLoggedIn, 
        function(req, res) {
            companyModel.getCompanyProfile(req['user'].id_user,
                                            function(result){
                                                return res.json(result);
                                            });
          }
    );

},
var saveCompanyProfile = function(router){

  router.post('/api/v1/profile/saveCompany', authenticationMiddleware.isLoggedIn, 
      function(req, res) {
        companyModel.saveCompanyProfile(req,
                        function(result){
                          return res.json(result);
                        });
      }
  );

}

module.exports = getCompanyProfile;