2012-01-23 3 views
0

Я хотел бы объединить эти 2 запросов для извлечения моих ДАННЫХ в целях:Объединить 2 SQL CodeIgniter запроса

QUERY 1:

$query = $this->db->query('SELECT ft_upload_data.*, ft_categories.*, ft_categories.category_name 
    FROM ft_upload_data 
    LEFT JOIN assigned_categories ON assigned_categories.ft_upload_data_id = ft_upload_data.post_id 
    LEFT JOIN ft_categories ON ft_categories.cat_id = assigned_categories.ft_categories_id 
    ORDER BY ft_upload_data.rank ASC 
    '); 

    return $query->result(); 

QUERY 2:

$query2 = $this->db->query('SELECT a.post_id, 
    COUNT(*) AS num_comments 
    FROM ft_upload_data a 
    JOIN ft_comments c ON c.post_id = a.post_id 
    GROUP BY a.post_id'); 

    return $query2->result(); 

я могу 't понять это:/Любые идеи, чтобы обмануть это?

Спасибо!

+0

Это выглядит как работа sql, а не CI. – Debugger

ответ

0

Самый простой (но не обязательно является наиболее эффективным) способом было бы сделать это в поточного запроса:

SELECT ft_upload_data.*, ft_categories.*, 
     (SELECT COUNT(*) 
     FROM ft_comments c 
     where c.post_id = ft_upload_data.post_id) AS num_comments 
FROM ft_upload_data 
LEFT JOIN assigned_categories 
     ON assigned_categories.ft_upload_data_id = ft_upload_data.post_id 
LEFT JOIN ft_categories 
     ON ft_categories.cat_id = assigned_categories.ft_categories_id 
ORDER BY ft_upload_data.rank ASC 

Более эффективным способом будет присоединиться к столу ft_comments и группы по POST_ID (при условии, что это однозначно идентифицирует строки ft_upload_data):

SELECT ft_upload_data.post_id, 
     /* include the maximum of each required field from ft_upload_data and 
      ft_categories here, with appropriate aliases */ 
     COUNT(*) AS num_comments 
FROM ft_upload_data 
LEFT JOIN assigned_categories 
     ON assigned_categories.ft_upload_data_id = ft_upload_data.post_id 
LEFT JOIN ft_categories 
     ON ft_categories.cat_id = assigned_categories.ft_categories_id 
LEFT JOIN ft_comments c 
     on c.post_id = ft_upload_data.post_id 
GROUP BY ft_upload_data.post_id 
ORDER BY max(ft_upload_data.rank) ASC 
+0

Работает как очарование! Благодаря! – user990463

Смежные вопросы