отсутствует правая скобка 00907. 00000 - «отсутствует правая скобка» - PullRequest
0 голосов
/ 11 ноября 2019

Рассмотрим следующую схему:

Suppliers(sid: integer, sname: string, address: string) 
Parts(pid: integer, pname: string, color: string) 
Catalog(sid: integer, pid: integer, cost: real) 

В отношении каталога указаны цены, выставленные поставщиками на цены.

У меня есть два вопроса:

  1. ДляДля каждого поставщика, который поставляет только зеленые детали, напечатайте название поставщика и общее количество деталей, которые он поставляет.
  2. Для каждого поставщика, поставляющего зеленую и красную детали, напечатайте название и ценусамая дорогая часть, которую она поставляет.

И вот что я пробовал до сих пор:

select  s.sname, count(*)
from    suppliers s, parts p, catalog c
where   p.pid = c.pid and c.sid = s.sid
group by s.sname, s.sid
having every (p.color = 'green')

и

select s.sname, max(c.cost)
from    suppliers s, parts p, catalog c
where   p.pid = c.pid and c.sid = s.sid
group by s.sname, s.sid
having some (p.color = 'green') and some (p.color = 'red')

Когда я выполняювыше двух запросов вывод результатов показывает отсутствие правильной круглой скобки, нужна помощь.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Вы можете отчетливо сосчитать детали зеленого цвета:

select s.sname, count(distinct p.pid) as "Total #of Parts"
  from suppliers s
  join catalog c on c.sid = s.sid
  join parts p on p.pid = c.pid
 group by s.sname
having count(distinct case when p.color = 'green' then 1 end ) = 1

, а для второго случая вы можете рассмотреть по крайней мере одну зеленую и по крайней мере одну красную части:

select s.sname, max(c.cost) as "Max Price"
  from suppliers s
  join catalog c on c.sid = s.sid
  join parts p on p.pid = c.pid
 group by s.sname
having count(case when p.color = 'green' then 1 end ) > 0
   and count(case when p.color = 'red' then 1 end ) > 0

every и some являются недопустимыми ключевыми словами в SQL Oracle.

0 голосов
/ 11 ноября 2019

В Oracle нет ни every, ни some (по крайней мере, не в 11g), поэтому ни одно из ваших having предложений не является правильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...