2012-03-29 2 views
0

ich eine Beziehung Tisch haben, so dass esSQL Query - Wie, um herauszufinden, wie die Mitarbeiter an mehr als einem Geschäft arbeitete

employeeID | storeID 

hat Was die Abfrage, welche Mitarbeiter an mehr als einem gearbeitet, um herauszufinden, wäre Geschäft?

SELECT employeeID WHERE ??? 

Und möglicherweise auch eine Liste jeweils verschiedene Geschäfte nur einmal pro Mitarbeiter ...

+0

Und möglicherweise auch die verschiedenen Geschäfte auflisten (nur einmal). –

+1

Wie ist Ihre DB- und Tabellenstruktur? Bitte posten Sie auch, was Sie bisher versucht haben. –

+1

Sie suchen COUNT, GROUP BY und HAVING. – Corbin

Antwort

3

Verwenden group by und having, wie in:

select employeeID, count(*) from table group by employeeID having count(distinct storeID) > 1 

Dies wird Ihnen die Mitarbeiter in mehr als einem Geschäft arbeiten. Verwenden Sie dies als Unterabfrage, um die Geschäfte für jeden dieser Mitarbeiter aufzulisten.

+0

Tatsächlich enthielt die Zählung (*) doppelte Speicher. Wenn zum Beispiel Mitarbeiter Bob 3 mal im Geschäft 1 gearbeitet hat, war die Anzahl 3 und nicht 1 ... –

+0

Also ganz nah dran !! Das Ende sollte count (distinct storeID) und nicht count (*) sein. Ich bearbeite deine Antwort und wähle sie aus –

1

können Sie versuchen -

select distinct employeeID,StoreID from table1 
where storeID in 
(
select storeID from table1 group by storeID having count(distinct employeeID) >1 
) 

cor Zählung zu speichern und auch können Sie in einer Abfrage zeigt Speicher-ID verwenden Abfrage folgende ..

select a.employeeID,a.storeID,b.cnt 
from table1 a, 
    (select employeeID,count(*) cnt 
     from table1 
    group by employeeID 
    having count(distinct storeID) >1) b 
where a.employeID=b.employeeid 
+0

Irgendeine Idee, wie man die Ladenzählung auch erhält? –

+0

Btw, Ihre erste Abfrage scheint etwas funktioniert zu haben, aber Daten fehlen. Zum Beispiel hat es Mitarbeiter gefunden, die in mehr als einem Geschäft gearbeitet haben, aber nicht alle ... –

+0

Ich denke, es sollte SELECT employeeID von table1 nach employeeID mit count (distinct storeID)> 1 –

Verwandte Themen