duplicate output fro mysql

大憨熊 提交于 2019-12-25 07:32:54

问题


MySQL query gives duplicate data in query result. Here is how I am trying to avoid it.

Actual query:

$product_sql_test2 = $this->db->query("SELECT p.product_id, p.price,    pc.product_id AS product_id
    FROM oc_product p
        INNER JOIN oc_product_to_category pc ON p.product_id = pc.product_id
    WHERE p.price  BETWEEN '".$product_info['related_kv4nt_min_2']."' and '".$product_info['related_kv4nt_max_2']."'
        AND pc.category_id =  '".$product_info['related_kv4nt_id_2']."'
    GROUP BY pc.product_id
    ORDER BY RAND( ) 
    LIMIT 0 , 10");

Here is what I do after selection:

if(isset($product_sql_test2->row['product_id'])){$this->data['product_spec_2_'.$i.''] = $product_sql_test2->row['product_id'];}
    $i++;
}

$pr_unique2 = array_unique($this->data['product_spec_2_'.$i.'']);
if ($this->data['product_spec_2_'.$i.''] != $pr_unique2[$i]){
    $product_sql_test2 = $this->db->query("SELECT  p.product_id, p.price,    pc.product_id AS product_id
        FROM oc_product p
            LEFT JOIN oc_product_to_category pc ON p.product_id = pc.product_id
        WHERE p.price  BETWEEN '".$product_info['related_kv4nt_min_2']."' and '".$product_info['related_kv4nt_max_2']."'
            AND pc.category_id =  '".$product_info['related_kv4nt_id_2']."'
        GROUP BY pc.product_id
        ORDER BY RAND( ) 
        LIMIT 0 , 10");//$sql_price_minus = $product_info['price'] - ($product_info['price'] * 0.10);
    $this->data['product_spec_2_'.$i.''] = $product_sql_test2->row['product_id'];
    continue;
}

How can I prevent duplicate results?

Here is how I edited the code, but got an error that said that query executed more then 30 seconds. What can be done?

$product_sql_test2 = $this->db->query("SELECT p.product_id, p.price,    pc.product_id AS product_id
FROM oc_product p
LEFT JOIN oc_product_to_category pc ON p.product_id = pc.product_id
WHERE p.price  BETWEEN '".$product_info['related_kv4nt_min_2']."' and '".$product_info['related_kv4nt_max_2']."'
AND pc.category_id =  '".$product_info['related_kv4nt_id_2']."'
GROUP BY pc.product_id
ORDER BY RAND() 
LIMIT 10");                        

if(isset($product_sql_test2->row['product_id'])){$this->data['product_spec_2_'.$i.''] = $product_sql_test2->row['product_id'];}
$data[]=$this->data['product_spec_2_'.$i.''];
$pr_unique = array_unique($data);

$i++;
if ($data != $pr_unique[$i]){
  $product_sql_test2 = $this->db->query("SELECT p.product_id, p.price,    pc.product_id AS product_id
FROM oc_product p
LEFT JOIN oc_product_to_category pc ON p.product_id = pc.product_id
WHERE p.price  BETWEEN '".$product_info['related_kv4nt_min_2']."' and '".$product_info['related_kv4nt_max_2']."'
AND pc.category_id =  '".$product_info['related_kv4nt_id_2']."'
GROUP BY pc.product_id
ORDER BY RAND() 
LIMIT 10");                        
    $i=1;
}
if(isset($product_sql_test2->row['product_id'])){$this->data['product_spec_2_'.$i.''] = $product_sql_test2->row['product_id'];}
$i++;

来源:https://stackoverflow.com/questions/17511560/duplicate-output-fro-mysql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!