2013-04-09 117 views
0

我有,當我在phpMyAdmin使用下面的查詢工作正常,我只是有點不確定如何在CI框架內做到這一點時,我有m.id等到位。MySQL查詢笨查詢

查詢:

SELECT DISTINCT m.name, m.id, c.id, c.name 
FROM `default_ps_products` p 
INNER JOIN `default_ps_products_manufacturers` m ON p.manufacturer_id = m.id 
INNER JOIN `default_ps_product_x_cats` x ON p.id = x.product_id 
INNER JOIN `default_ps_products_categories` c ON x.category_id = c.id 

回答

2

方法有很多種。

例1:

$result = $this->db 
    ->select('m.name, m.id, c.id, c.name') 
    ->distinct() 
    ->join('default_ps_products_manufacturers m', 'p.manufacturer_id=m.id') 
    ->join('default_ps_product_x_cats x', 'p.id=x.product_id') 
    ->join('default_ps_products_categories c', 'x.category_id=c.id') 
    ->get('default_ps_products p') 
    ->result(); 

echo $this->db->last_query(); 

有時活動記錄不能產生想要查詢。所以,你可以把它寫自己。

實施例2:

$query = "SELECT DISTINCT m.name, m.id, c.id, c.name 
      FROM `default_ps_products` p 
      INNER JOIN `default_ps_products_manufacturers` m ON p.manufacturer_id = m.id 
      INNER JOIN `default_ps_product_x_cats` x ON p.id = x.product_id 
      INNER JOIN `default_ps_products_categories` c ON x.category_id = c.id"; 

$result = $this->db 
    ->query($query) 
    ->result(); 

echo $this->db->last_query(); 

在該第二示例中,DB ::查詢()可以採用的陣列作爲將替代任何問號$查詢內與相應的值的第二參數(?)。例如說,你需要一些地方值添加到您的查詢。

實施例3:

$query = "SELECT DISTINCT m.name, m.id, c.id, c.name 
      FROM `default_ps_products` p 
      INNER JOIN `default_ps_products_manufacturers` m ON p.manufacturer_id = m.id 
      INNER JOIN `default_ps_product_x_cats` x ON p.id = x.product_id 
      INNER JOIN `default_ps_products_categories` c ON x.category_id = c.id 
      WHERE c.id=?"; 

$result = $this->db 
    ->query($query, array(1)) 
    ->result(); 

echo $this->db->last_query();