2016-06-06 5 views
1

Ich möchte herausfinden, wie viele Mitarbeiter in "xyz" Standort arbeiten und benennen sie, ich habe 2 Tabellen emp und dept (dno, dname, Standort), zeigen beide Abfragen die Anzahl, aber es zeigt nicht nur alle emp-Namen zeige den ersten Übereinstimmungsnamen an. Ich möchte, dass alle Namen angezeigt werden.Wie viele Mitarbeiter arbeiten am Standort "xyz" und benennen sie?

//This query gives names of employess in "xyz"location. 
SELECT e.emp_name 
     FROM emp_mca e 
    JOIN dept_mca d 
WHERE e.dno = d.d_no 
    AND location = "xyz"; 

//This query gives number of employees working at "xyz"location. 
    SELECT COUNT(*) 
    FROM emp_mca e 
    JOIN dept_mca d 
    WHERE e.dno = d.d_no 
    AND location = "xyz"; 

Ich möchte beide kombinieren.

+1

Sie sind für zwei verschiedene Dinge zu fragen. Erstellen Sie zuerst eine separate Abfrage für jedes Objekt. Dann komm zurück zu uns, und wir zeigen dir, wie man sie zusammenfügt. – Strawberry

+0

Sie können keine Aggregatfunktion wie 'COUNT()' verwenden, wenn Sie jeden Mitarbeiter anzeigen möchten. – Barmar

Antwort

0

Sie können eine zusätzliche Unterabfrage, um die Gesamtzahl der Beschäftigten zu erhalten, die in der angegebenen Position arbeitet hinzu:

SELECT e.emp_name, t.cnt  
FROM emp_mca e 
JOIN dept_mca d ON e.dno = d.d_no 
CROSS JOIN (
    SELECT COUNT(*) AS cnt 
    FROM emp_mca 
    JOIN dept_mca d ON dno = d_no 
    WHERE location = "xyz") AS t 
WHERE d.location = "xyz"; 
Verwandte Themen