[eluser]ivantcholakov[/eluser]
If you insist to use the query builder, this example is possible with CI 3.0-dev.
Code:
$po = 'portal.orders';
$pop = 'portal.orderproducts';
$pdd = 'h2g.packages_daily_deal';
$pc = 'portal.customers';
$sql = $this->db
->select()
->from($po)
->join($pop, "$po.id = $pop.order_id", 'inner')
->join($pdd, "$pop.product_id = $pdd.crm_id OR $pop.product_id = $pdd.crm_id_thd", 'inner')
->join($pc, "$po.customer_id = $pc.id", 'inner')
->group_start()
->where("$po.brand", '432')
->or_where("$po.brand", '123')
->group_end()
->where("$po.reported_to_mwa <>", 1)
->where("$po.status_id", 5)
->group_by("$po.id")
->order_by("$po.email", 'asc') // I am guessing the table here.
->get_compiled_select();
echo $sql;
/*
SELECT *
FROM `portal`.`orders`
INNER JOIN `portal`.`orderproducts` ON `portal`.`orders`.`id` = `portal`.`orderproducts`.`order_id`
INNER JOIN `h2g`.`packages_daily_deal` ON `portal`.`orderproducts`.`product_id` = `h2g`.`packages_daily_deal`.`crm_id` OR `portal`.`orderproducts`.`product_id` = `h2g`.`packages_daily_deal`.`crm_id_thd`
INNER JOIN `portal`.`customers` ON `portal`.`orders`.`customer_id` = `portal`.`customers`.`id`
WHERE (
portal.orders.brand = '432'
OR portal.orders.brand = '123'
)
AND `portal`.`orders`.`reported_to_mwa` <> 1
AND `portal`.`orders`.`status_id` = 5
GROUP BY `portal`.`orders`.`id`
ORDER BY `portal`.`orders`.`email` ASC
*/