Как получить значение из другой таблицы для интеграции в подзапрос? - PullRequest
1 голос
/ 02 мая 2019

У меня была таблица A следующим образом:

 ID | NegeriID  | yeartamatkhidmat | yeartamatkhidmat
-----------------------------------------------------------------
 1  |     2     |      2001        |      2002
 1  |     2     |      2003        |      2007
 2  |     2     |      2008        |      2012
 2  |     1     |      2013        |      2018
 3  |     3     |      2000        |      2001

У меня был подзапрос, чтобы получить сумму лет опыта работы в соответствии с Негери (штат) следующим образом:

 $query = DB::table('B')
                ->select('B.name','B.ID', '');


 $query->select(DB::raw('B.name, m.NegeriID, sum(distinct m.duration)'))
                  ->from(DB::raw('(SELECT ID, NegeriID, yeartamatkhidmat - yearmulakhidmat as duration FROM A) AS m 
                    RIGHT JOIN B ON B.ID=m.ID'))
                  ->groupBy('m.ID', 'm.NegeriID');

У меня была другая таблица со значением name и Negeri:

Table B

    ID |  Name 
    --------------
    1  |  Bill   
    2  |  Jane   
    3  |  Roy     

Table C

   NegeriID |  Negeri 
    --------------
       1    |    E  
       2    |    F  
       3    |    G

Как взять значение name и Negeri изтаблицы для интеграции в подзапрос выше?

Я пробовал этот код:

 $query->JOIN(DB::RAW('(SELECT m.itemRegistrationID, m.NegeriID, sum(distinct m.duration) AS s 
                                        FROM (SELECT itemRegistrationID, NegeriID, yeartamatkhidmat - yearmulakhidmat as duration FROM itemregistrationpangkat) AS m)'),
                                      function($join){
                                        $join->on("itemregistrations.itemRegistrationID","=","m.itemRegistrationID");
                                      })
                  ->groupBy('m.itemRegistrationID', 'm.NegeriID');

Но он показывает ошибку:

    Syntax error or access violation: 1248 Every derived table must have its own alias 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...