Преобразование необработанного SQL, содержащего UNION, подзапросы, LEFT JOIN, GROUP BY и ORDER BY, в скрипт активной запPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Преобразование необработанного SQL, содержащего UNION, подзапросы, LEFT JOIN, GROUP BY и ORDER BY, в скрипт активной зап

Сообщение Anonymous »

Смотрите следующий запрос.
Я хочу преобразовать в активные записи CodeIgniter.
SQL QUERY:
Select MobNo,Caller,Sum(Tot_In_Call) as Tot_In_Call,Called,Sum(Tot_Out_Call) as Tot_Out_Call
From (

SELECT CTE.Caller as MobNo,Incall.Caller,Incall.Tot_In_Call, Null as Called,0 as Tot_Out_Call
FROM Call_Details CTE
Left Join (
Select Count(Called) as Tot_In_Call,Caller,Called
from call_details
Group By Caller,Called
) InCall on (Cte.caller = InCall.Called)
Where InCall.Called in($call_array)
Group BY CTE.Caller,Incall.Caller,Incall.Tot_In_Call

Union All

SELECT CTE.Caller as MobNo,Null as Caller,Null as Tot_In_Call, OutCall.Called,OutCall.Tot_Out_Call
FROM Call_Details CTE
Left Join (
Select Count(Called) as Tot_Out_Call,caller,Called
from call_details
group by caller,called
) OutCall on (CTE.caller = OutCall.caller And cte.called = OutCall.called)
Where CTE.Caller in($call_array)
Group BY CTE.Caller,OutCall.Called,OutCall.Tot_Out_Call

) As Qry
WHERE Qry.MobNo in($call_array)
Group By Qry.MobNo,Qry.Caller,Qry.Called
order by Qry.MobNo,Qry.Caller,Qry.Called

Как я могу преобразовать это без использования $this->db->query()?
Пытался сделать, используя активную запись :-
$this->db->select("MobNo,Caller,Sum(Tot_In_Call) as Tot_In_Call,Called,Sum(Tot_Out_Call) as Tot_Out_Call");
$this->db->from("SELECT CTE.Caller as MobNo,Incall.Caller,Incall.Tot_In_Call, Null as Called,0 as Tot_Out_Call
FROM Call_Details CTE
Left Join (
Select Count(Called) as Tot_In_Call,Caller,Called
from call_details
Group By Caller,Called
) InCall on (Cte.caller = InCall.Called)
Where InCall.Called in($call_array)
Group BY CTE.Caller,Incall.Caller,Incall.Tot_In_Call

Union All

SELECT CTE.Caller as MobNo,Null as Caller,Null as Tot_In_Call, OutCall.Called,OutCall.Tot_Out_Call
FROM Call_Details CTE
Left Join (
Select Count(Called) as Tot_Out_Call,caller,Called
from call_details
group by caller,called
) OutCall on (CTE.caller = OutCall.caller And cte.called = OutCall.called)
Where CTE.Caller in($call_array)
Group BY CTE.Caller,OutCall.Called,OutCall.Tot_Out_Call");
$this->db->where_in("MobNo",$call_array);
$this->db->group_by("MobNo,Caller,Called");
$this->db->order_by("MobNo,Caller,Called","ASC");
$this->db->get();


Подробнее здесь: https://stackoverflow.com/questions/394 ... nd-order-b
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»