2016-04-06 13 views
1

enter image description hereAbfrage gibt kartesisches Produkt (Nordwind)

Ich bin mit Northwind Datenbank in Oracle.

Aufgabe: Fetch Nr. von Angestellten, die in jeder Region arbeiten.

Ergebnis: (Region, Anzahl der Mitarbeiter)

ich diese Abfrage Ich versuche aber es kartesisches Produkt

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; 

Frage zurück: Was mit meiner Anfrage falsch ist?

+0

Kartesisches Produkt zwischen denen Tabellen? Und meinst du, dass es ein kartesisches Produkt zurückgibt, bevor du eine Gruppe machst? Können Sie eine Datenprobe und das Ergebnis, das Sie gerade erhalten, und was Sie erwarten? – ruudvan

+0

Ich kann mit dieser Abfrage nichts falsch finden. (Nun, Sie sollten moderne, explizite JOIN-Syntax anstelle der alten impliziten Joinsyntax verwenden ...) – jarlh

+0

check it ich habe hochgeladen –

Antwort

3

Das einzige, was ich denken kann, ist, dass einer Ihrer Tabelle multipliziert Ergebnisse ist, und Sie sollten count (distinct) verwenden statt:

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

Warum es kartesischen Produkt zurückgibt können Sie es erklären? –

+0

Was meinst du mit Kartesisch? Multipliziert? – sagi

+0

Kreuz Join bedeutet –