首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一张表多条件查询,不生成多行

一张表多条件查询,不生成多行
EN

Stack Overflow用户
提问于 2012-07-29 23:56:31
回答 1查看 579关注 0票数 0

我正在使用的数据库(我没有能力更新或修改其中的任何内容,我应该只查询我正在创建的报告)的设置方式相当奇怪。有时信息需要一百万个中间表才能到达,而有时所有信息都在同一个表中。

为了获得我需要的唯一地址,我必须连接3个表(包含发票信息的表到包含关键字的表,该键为每个组织分配一个编号,该表包含数据库中的所有组织)。三个表中的最后一个表包含每个单独的公司,但是公司可以具有相同的不同角色(例如,一个公司可以是供应商,一个公司可以是客户,一个公司可以是合作伙伴,等等),所以表有一个“类型”列,说明1=supplier、2=customer等的角色。

示例代码和数据如下(对不起,我似乎无法在这里正确地格式化表格):

代码语言:javascript
复制
select * from a
join b on a.id=b.id
join c on b.orgid=c.orgid

数据:

代码语言:javascript
复制
a.OrderID    b.Organization    c.Role
-----------------------------------------    
   123       Acme Inc.            1
   123       Roadrunner Inc.      2
   123       Venture Co.          2

我正在进行的查询需要提取订单ID、供应商、客户和合作伙伴,但无论我如何连接它,或者如何尝试使用WITH语句,它都会生成3行,其中每行中,三个角色中的一个被命名,其余的为空。

有人能帮上忙吗?

非常感谢您花时间阅读这个冗长的问题。

EN

Stack Overflow用户

发布于 2012-08-06 02:53:58

这会让你更接近你想要的结果吗?

代码语言:javascript
复制
;with cteOrgRoles as
(
select b.id, b.orgid, organization, role
from b 
    inner join c on b.orgid = c.orgid
)
    select 
        a.*,
        r1.organization as role1,
        r2.organization as role2
    from a
        left join cteOrgRoles r1 on a.id = r1.id and r1.role=1
        left join cteOrgRoles r2 on a.id = r2.id and r2.role=2

如果在其他角色中有多个条目,您将在各个角色列中获得重复项

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11710621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档