2016-04-06 3 views
1

enter image description hereЗапрос возвращает декартово произведение (Борей)

Я использую Борей базы данных в Oracle.

Задача: Извлечь нет. сотрудников, работающих в каждом регионе.

Результат: (RegionName, Количество сотрудников)

Я пытаюсь этот запрос, но возвращать декартово произведение

select r.regiondescription, count(e.employeeid) 
from employees e, 
    employeeterritories et, 
    territories t, 
    region r 
where r.regionid = t.regionid 
    and et.territoryid = t.territoryid 
    and e.employeeid = et.employeeid 
group by r.regiondescription; 

Вопрос: Что случилось с моим запросом?

+0

декартово произведение между которыми таблицы? И вы имеете в виду, что он возвращает декартовой продукт, прежде чем делать группу? Можете ли вы опубликовать образец данных и результат, который вы получаете сейчас и что вы ожидаете? – ruudvan

+0

Я не могу найти что-то не так с этим запросом. (Ну, вы должны использовать современный, явный синтаксис JOIN вместо этого старого неявного синтаксиса соединения ...) – jarlh

+0

проверить это Я загрузил –

ответ

3

Единственное, что я могу думать, что один из вашей таблицы умножения результатов, и вы должны использовать счетчик (DISTINCT) вместо:

select r.regiondescription, count(distinct e.employeeid) 
from employees e, 
    employeeterritories et, 
    territories t, 
    region r 
where r.regionid = t.regionid 
    and et.territoryid = t.territoryid 
    and e.employeeid = et.employeeid 
group by r.regiondescription; 
+0

Почему он возвращает декартовой продукт, можете ли вы его объяснить? –

+0

Что вы подразумеваете под декартово? Умножить? – sagi

+0

Перекрестное соединение означает –

Смежные вопросы