我不是SQL的专家。我只是个初学者。
我的表格结构:
合作伙伴表:objectid,合作伙伴[合作伙伴ID],partnerfunc
客户:customerid,客户类型
给定是对象id。
查询
select partner from partners where object = '352846';
它返回6个paartner信息。
1
2
3
4
5
6
select partnerfunction from partners where object = '35284624';
A
B
C
Z
X
Y
返回相应的合作伙伴功能。
我需要在给定数据的帮助下从客户表中获取客户类型。
select customertype from customer where customerid in (select partner from
partners where iobject = '352846');
它只返回4个信息。
Owner
Owner
Vendor
Vendor [Remaining two values may be em]
我很困惑。我想打印相应的合作伙伴和合作伙伴功能,以便我可以检查结果。
首先我将上述查询更改为如下
select customertype from customer, iobj_partners where customerid in
(select partner from iobj_partners where iobject = '352846') and iobject
= '352846';
它返回24个结果
owner [12 rows]
vendor [12 rows]
我应该使用不同的吗?为什么它会返回24个值?我真的很困惑我写的查询。我完全误解了这个问题。
我尝试将其与合作伙伴和合作伙伴功能一起打印,
select customertype, partner, partnerfunction
from customer, partners
where customerid in (select partner from partners where iobject =
'352846')
and iobject = '352846'
group by customertype, partner, partnerfunction;
返回12行。 6个供应商,6个所有者。
但我知道它会返回如下
partner customertype partnerfunction
1 owner A
2 B
3 owner C
4 X
5 vendor Y
6 Z
但它的回报超过我想要的回报?请清除我的基本疑问
答案 0 :(得分:0)
听起来你需要使用join
,可能是outer join
来返回空客户:
select p.partner, c.customertype, p.partnerfunction
from partner p
left join customer c on p.partner = c.customerid
where p.object = 352846
这是一个非常好的参考: