codeigniter - CodeIgniter 中 Join 中的子查询

标签 codeigniter join subquery

我有以下 mysql 查询

SELECT
  events.id      AS id,
  A.sold_tickets
FROM (`events`)
  JOIN `category` AS cat
    ON `events`.`category_id` = `cat`.`id`
  JOIN `category` AS sub_cat
    ON `events`.`subCategoryID` = `sub_cat`.`id`
  JOIN `events_custom_dates` AS events_date
    ON `events_date`.`event_id` = `events`.`id`
  JOIN `my_promos`
    ON `events`.id = `my_promos`.`event_id`
  LEFT JOIN `mycalendar`
    ON `mycalendar`.`event_id` = `my_promos`.`event_id`
  LEFT JOIN `promo_events_stats`
    ON `promo_events_stats`.`id` = `events`.`id`
  LEFT JOIN (SELECT
           my_promos.event_id,
           SUM(tickets_sold.quantity) AS sold_tickets
         FROM my_promos
           JOIN tickets_sold
         ON tickets_sold.code = my_promos.link_code
         WHERE my_promos.user_id = '532'
         AND DATE(my_promos.date) >= '2013-11-01'
         AND DATE(my_promos.date) <= '2014-01-22'
         GROUP BY my_promos.event_id) A
    ON A.event_id = events.id
WHERE `my_promos`.`user_id` = '532'
    AND DATE(my_promos.date) >= '2013-11-01'
    AND DATE(my_promos.date) <= '2014-01-22'
GROUP BY my_promos.event_id

我想将包含子查询的连接部分转换为codeignitier方式。接下来是

LEFT JOIN (SELECT
       my_promos.event_id,
       SUM(tickets_sold.quantity) AS sold_tickets
     FROM my_promos
       JOIN tickets_sold
     ON tickets_sold.code = my_promos.link_code
     WHERE my_promos.user_id = '532'
     AND DATE(my_promos.date) >= '2013-11-01'
     AND DATE(my_promos.date) <= '2014-01-22'
     GROUP BY my_promos.event_id) A
ON A.event_id = events.id

我想在 codeignitier 查询结构中使用上面的内容

最佳答案

就是这么简单,按照以下方式进行即可

$this->db->join('(SELECT my_promos.event_id, SUM(tickets_sold.quantity) AS my_sold_tickets,
                 (IFNULL(SUM(tickets_sold.price),0)*.10) AS earnings, IFNULL(SUM(tickets_sold.price),0) AS sales
                  FROM my_promos
                  JOIN tickets_sold ON tickets_sold.code = my_promos.link_code
                  WHERE my_promos.user_id = '532' AND DATE(my_promos.date) >= '2013-11-01'
                  AND DATE(my_promos.date) <= '2014-01-23'
                  GROUP BY my_promos.event_id) A','A.event_id = events.id', 'left');

简单..! :)

关于codeigniter - CodeIgniter 中 Join 中的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21301974/

相关文章:

php - 如何使用ajax和codeigniter进行条件搜索

mysql - JOIN 返回重复的结果,我应该担心吗?

mysql 连接查询 - QUERY

MySql 子查询值未显示正确的结果

mysql - 'building_requirements_count' 中的未知列 'field list'

javascript - 显示存储在下拉菜单中的数据

php - 我做错了吗,或者在使用数组作为字段名称时 CodeIgniter 表单验证库中是否存在错误?

php - 选择 MySQL If (ID) 在数组中

mysql - MYSQL中不同数据类型之间的比较如何快速查询

mysql - 子查询-从不相关的表返回数据?