Каков правильный синтаксис для этой проблемы правильного соединения? - PullRequest
2 голосов
/ 10 ноября 2010

Я работаю на мою домашнюю работу и у меня возникают проблемы выяснить правильный синтаксис для «NOT IN» функциональности.

База данных представляет собой небольшой страховой базы данных (перевозчики, члены, работодатели, планы) составил для этого задания. Я должен «Список всех носителей и подсчет планов у них есть. (Использовать либо вправо или влево присоединиться). Перечислить carrier_id, carname, и количество планов.»

Это то, что я написал, как прямо сейчас:

SELECT carrier_id, carname, count(*) AS NoPlans
FROM carriers RIGHT JOIN plans
ON carriers.carrier_id = plans.carrierid;

Это бросает «не функция группы одногрупповой» ошибку при попытке запустить его, но это потому, что я думаю, что он ищет, где положение, и я не знаю, что условие должно быть.

структура таблицы Carrier:

Name                           Null     Type
------------------------------ -------- -----------
CARRIER_ID                     NOT NULL CHAR(4)
CARNAME                                 CHAR(35)
CARADDRESS                              CHAR(50)
CARCITY                                 CHAR(30)
CARSTCODE                               CHAR(2)
CARZIP                                  CHAR(10)
CARPHONE                                CHAR(10)
CARWEBSITE                              CHAR(255)
CARCONTACTFIRSTNAME                     CHAR(35)
CARCONTACTLASTNAME                      CHAR(35)
CARCONTACTEMAIL                         CHAR(255)

11 rows selected

Планы структура таблицы:

Name                           Null     Type
------------------------------ -------- -------------
PLANID                         NOT NULL NUMBER
PLNDESCRIPTION                          CHAR(35)
PLNCOST                                 NUMBER(8,2)
CARRIERID                               CHAR(4)

4 rows selected

Ответы [ 4 ]

2 голосов
/ 10 ноября 2010
SELECT carrier_id, carname, count(*) AS NoPlans 
  FROM carriers RIGHT JOIN plans 
    ON carriers.carrier_id = plans.carrierid
 GROUP BY carrier_id, carname;
2 голосов
/ 10 ноября 2010

count требуется предложение group by.

Тебе также следует подумать о своем присоединении. Вероятно, это не совсем то, что вы ожидаете.

0 голосов
/ 10 ноября 2010
SELECT carrier_id, carname, count(plans.PLANID) AS NoPlans
FROM carriers LEFT JOIN plans
ON carriers.carrier_id = plans.carrierid
GROUP BY carrier_id, carname
0 голосов
/ 10 ноября 2010
SELECT c.carrier_id, c.carname, count(1) as no_plans
FROM carriers c RIGHT JOIN plans p
ON c.carrier_id = p.carrierid
group by c.carrier_id , c.carname
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...