请问一道SQL的查询题?

40、现有订单表orders,包含数据如下表。若查询既订购了产品P01,又订购了产品P02的顾客编号,可以执行以下()sql语句。(选择两项)cid(顾客编号)Pid(产... 40、现有订单表orders, 包含数据如下表。若查询既订购了产品P01,又订购了产品P02的顾客编号,可以执行以下()sql语句。(选择两项)
cid (顾客编号) Pid (产品编号)
C01 P01
C01 P02
C02 P01
C03 P02

a) select distinct(cid) from orders o1 where o1.pid in ('p01','p02')
b) select distinct(cid) from orders o1,orders o2 where o1.pid='p01' and o2.pid='p02' and o1.cid=o2.cid
c) select distinct(cid) from orders o1 where pid='p01' and cid in (select cid from orders where pid ='p02')
d) select distinct(cid) from orders o1,orders o2 where o1.pid='p01' and o2.pid='p02'
请问这道题的答案是什么?请问b和d是不是错在语法不通,如果表之间没有关系也可以这样写吗?请大侠帮忙解释以下?
展开
 我来答
雪00燕
2007-02-05 · TA获得超过443个赞
知道小有建树答主
回答量:349
采纳率:57%
帮助的人:107万
展开全部
C 正确
B,D 不正确,没有指定列,因为表定义了别名,所以distnict(cid),应该加上表的名字,应该是(o1.cid),否则找不到列名,
B 加上(o1.cid)后正确,D 加上后也不对
A 是或者的关系,不是同时买了两种产品

一个表被定义了两次别名,然后做联接,相当于是自联接
songjuan11
2007-02-05 · 超过27用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:88.4万
展开全部
C是正确答案!表之间必须有关联才能查询!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dust_fly
2007-02-05 · 超过44用户采纳过TA的回答
知道答主
回答量:258
采纳率:0%
帮助的人:0
展开全部
C 同一个表之间并没有关联,但有两个条件,所以有个AND条件,在同一个表中再加一个查询条件

B 不会同时存在o1.pid='p01' and o2.pid='p02' and o1.cid=o2.cid 这样的条件,因为一条记录只有一个条件
D 一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式