2017-02-15 4 views
0

Ich habe eine Tabelle mit dem Namen Region zwei Spalten: region_id aufweist, ist PrimärschlüsselMySql StoredProcedure mit INNER JOIN

 |region_id | region_code | 
     | ----------+-------------+ 
     |   1 | Asia  | 
     |   2 | Can   | 
     |   3 | Cen   | 
     |   4 | West  | 
     |   5 | GNW   | 
     ----------+-------------+ 

Und ich habe eine andere Tabelle Mitarbeiter, in denen emp_id Primärschlüssel ist und region_id_fk Fremd ist Schlüssel zugeordnet Region Tabelle:

 +------+---------+---------+------------+---------------+---------+------------ 
    |emp_id| emp_name|global_id|region_id_fk|attendance_date|ispresent| is_billable| 
    +------+---------+---------+------------+---------------+---------+--------- 
    | 1 | andrew | candrew |   1 | 2017-02-13 |  1 |   1 | 
    | 2 | andrew | candrew |   1 | 2017-02-14 |  1 |   1 | 
    | 3 | andrew | candrew |   1 | 2017-02-15 |  1 |   1 | 
    | 4 | andrew | candrew |   1 | 2017-02-16 |  1 |   1 | 
    | 5 | andrew | candrew |   1 | 2017-02-17 |  0 |   1 | 
    | 6 | simon | csimon |   1 | 2017-02-13 |  1 |   1 | 
    | 7 | simon | csimon |   1 | 2017-02-14 |  1 |   1 | 
    | 8 | simon | csimon |   1 | 2017-02-15 |  1 |   1 | 
    | 9 | simon | csimon |   1 | 2017-02-16 |  1 |   1 | 
    | 10 | simon | csimon |   1 | 2017-02-17 |  1 |   1 | 
    | 11 | peter | cpeter |   2 | 2017-02-13 |  1 |   1 | 
    | 12 | peter | cpeter |   2 | 2017-02-14 |  1 |   1 | 
    | 13 | peter | cpeter |   2 | 2017-02-15 |  1 |   1 | 
    | 14 | peter | cpeter |   2 | 2017-02-16 |  1 |   1 | 
    | 15 | alvin | calvin |   2 | 2017-03-13 |  1 |   0 | 
    | 16 | thomas | thomas |   2 | 2017-03-14 |  0 |   1 | 
    | 17 | samuel | csamuel |   2 | 2017-03-15 |  1 |   0 | 
    | 18 | jackson | cjackson|   2 | 2017-03-16 |  1 |   0 | 
    | 19 | clinda | clinda |   2 | 2017-03-17 |  1 |   1 | 
    +--------+----------+-----------+--------------+-----------------+------ 

ich bereits diese Art der Abfrage, wo ich innere Verknüpfung und zählt in einer gespeicherten Prozedur:

DELIMITER $$ 
DROP PROCEDURE IF EXISTS test.some_proc $$ 
CREATE PROCEDURE test.some_proc(IN in_is_billable INT,IN in_month INT,IN in_ispresent INT) 
BEGIN 
     DECLARE capacitycount INT; 
     DECLARE hrs INT; 
     SET hrs=8; 
     SELECT COUNT(ispresent)*8 AS team_capacity, region_code 
     FROM employee emp 
     INNER JOIN region r ON r.region_id=emp.region_id_fk 
     WHERE (is_billable=in_is_billable) AND 
     (MONTH(attendance_date)=in_month) AND 
     (ispresent=in_ispresent); 
END $$ 
DELIMITER ; 

Und its me unten Ergebnis geben: Team Kapazität | region_code 128 | Asien

ich meine gespeicherten Prozedur alle wollen den Regionalcode in Region Tabelle, die zusammen mit Teamfähigkeit geben, im in der gespeicherten Prozedur zu berechnen, die geben wird Ich richtige Antwort.

Das Ergebnis sollte so sein, aber im Moment bekomme ich nur Teamkapazität für nur eine Region.

team capacity|region_code 
    128   |Asia 
    39   |Can 
    68   |Cen 

Jede mögliche Hilfe geschätzt, Vielen Dank im Voraus :)

Antwort

0

Sie Gruppe

von in Ihrer Syntax verpasst
DELIMITER $$ 
DROP PROCEDURE IF EXISTS test.some_proc $$ 
CREATE PROCEDURE test.some_proc(IN in_is_billable INT,IN in_month INT,IN in_ispresent INT) 
BEGIN 
     DECLARE capacitycount INT; 
     DECLARE hrs INT; 
     SET hrs=8; 
     SELECT COUNT(ispresent)*8 AS team_capacity, region_code 
     FROM employee emp 
     INNER JOIN region r ON r.region_id=emp.region_id_fk 
     WHERE (is_billable=in_is_billable) AND (MONTH(attendance_date)=in_month) AND 
     (ispresent=in_ispresent) 
     group by r.region_code; 
END $$ 
DELIMITER ; 
+0

Vielen Dank, jetzt bin immer richtige Antwort @Ankit Agrawal –

+0

Accept diese Antwort.So wird es für andere hilfreich sein, ihre Probleme loszuwerden –