如何比较同一张表中的两个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 . "'");
}
答案 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 . "'");
}