У меня была таблица 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