比较同一表中的两个元素并返回差异/缺失数据

时间:2019-04-23 08:09:39

标签: mysql

如何比较同一张表中的两个ID并获取差异/缺失数据?

我有当前产品($ current_id)的表单,其中显示了X产品($ id)的数据。

数据如下:name1 name2 name3

比您可以选择为当前产品($ current_id)插入一些数据(例如:name1 name2)

在oc_product_option_value中有2条记录 (oc_option_value_description保留名称,oc_product_option_value保留ID等)

$ id data = name1 name2 name3

$ current_id数据= name1 name2

如果返回到当前产品($ current_id)并拉出相同的X个产品数据($ id),则必须仅显示data = name3

如何比较以获得结果?

public function getInfo($id, $current_id){

$query = $this->db->query("SELECT
                    oc_product_option_value.*,
                    oc_option_value_description.name
                    oc_product_option_value
                    LEFT JOIN oc_option_value_description ON (oc_product_option_value.option_value_id = oc_option_value_description.option_value_id)
                    WHERE product_id = '" . $id . "'");

}

1 个答案:

答案 0 :(得分:0)

我用额外的查询和小的php代码完成了此操作,但没有找到一种方法可以通过一个查询而不使用php来完成整个工作

$masterProduct = $this->model_catalog_product->getMatrakOptionsMasterProduct($id);
$currentProduct = $this->model_catalog_product->getMatrakOptionsCurrentProduct($current_id);

$data['options'] = array();
$current = array_column($currentProduct, 'name');
foreach($masterProduct as $value){
if(!in_array($value['name'], $current)){
    $data['options'][] = $value;
}
}

和两个查询

public function getMatrakOptionsMasterProduct($id){
$query = $this->db->query("SELECT
                    oc_product_option_value.*,
                    oc_option_value_description.name
                    FROM oc_product_option_value
                    LEFT JOIN oc_option_value_description ON (oc_product_option_value.option_value_id = oc_option_value_description.option_value_id)
                    WHERE product_id = '" . $id . "'");
}


public function getMatrakOptionsCurrentProduct($current_id){
$query = $this->db->query("SELECT
                oc_product_option_value.*,
                oc_option_value_description.name
                FROM oc_product_option_value
                LEFT JOIN oc_option_value_description ON (oc_product_option_value.option_value_id = oc_option_value_description.option_value_id)
                WHERE product_id = '" . $current_id . "'");
}