【发布时间】:2015-02-03 02:22:07
【问题描述】:
我正在使用 Oracle 数据库 11g。 假设我有 3 个数据库表。一个包含有关比萨店的信息,一个包含有关人员的信息,一个包含有关订单的信息:
PIZZA_SHOP
身份证|姓名 |
1 | 多米诺骨牌
2 | 必胜客
3 | 爸爸约翰斯
人
姓名 | PIZZA_SHOP_FK
吉姆 | 多米诺骨牌
托德 | 必胜客
凯利 | 多米诺骨牌
弗兰克 | 爸爸约翰斯
订单
PERSON_FK |订购
吉姆 | 意大利辣香肠
托德 | 奶酪
凯利 | 意大利辣香肠
吉姆 | 香肠
托德 | 专业
我们想省略特色披萨。从这张表中,我们可以看到从 Dominos 订购了 2 个意大利辣香肠和 1 个香肠披萨,从必胜客订购了 1 个奶酪披萨,并且没有从 Papa Johns 订购任何东西。我想要做的是得到以下输出:
多米诺骨牌 --- 意大利辣香肠 --- 2
多米诺骨牌 --- 香肠 --- 1
多米诺骨牌 --- 奶酪 --- 0
必胜客 --- 意大利辣香肠 --- 0
必胜客 --- 香肠 --- 0
必胜客 --- 奶酪 --- 1
棒约翰---意大利辣香肠--- 0
棒约翰---香肠--- 0
棒约翰---奶酪--- 0
我尝试过的是这样的:
选择 PS.NAME、O.ORDER、COUNT(O.ORDER)
来自 PIZZA_SHOP PS
完全外联人 P
ON P.PIZZA_SHOP_FK = PS.NAME
完全外连接订单 O
ON O.PERSON_FK = P.NAME
在哪里订购(“意大利辣香肠”、“奶酪”、“香肠”)
GROUP_BY PS.NAME,PS.TYPE
但不幸的是,它不会检索任何“0”计数。我已经尝试了其他几种方法,并且开始没有想法了。谁能帮我解决一下?
【问题讨论】: