NOT IN サブクエリを使用して、tbl_jobs テーブルにリストされているジョブが tbl_delivery_items テーブルの配送アイテムに割り当てられていない場所を選択しようとすると、現在問題が発生しています。
サブクエリは、supplier_job_job_id 1 を返す必要があります (別のクエリとして実行すると返されます)。ID が 1 のジョブは NOT IN で除外されます。空のセットを期待していたときの job_id は 1 でした。クエリを生成する codeigniter コードは次のとおりです。
$this->db->join("tbl_jobs", "tbl_jobs.job_id = tbl_supplier_jobs.supplier_job_job_id");
$this->db->where_not_in("supplier_job_job_id", "SELECT delivery_item_job_id FROM tbl_delivery_items");
$result = $query->result_array();
echo $this->db->last_query();
return $result;
生成されるクエリは次のとおりです。
SELECT * FROM (`tbl_supplier_jobs`) JOIN `tbl_jobs` ON `tbl_jobs`.`job_id` = `tbl_supplier_jobs`.`supplier_job_job_id` WHERE `supplier_job_job_id` NOT IN ('SELECT delivery_item_job_id FROM tbl_delivery_items') AND `supplier_job_supplier_id` = '1' ORDER BY `tbl_jobs`.`job_number` DESC
そして、ここにデータがあります:
tbl_supplier_jobs
supplier_job_id | supplier_job_job_id | supplier_job_supplier_id
1 1 1
2 2 2
tbl_jobs
job_id | job_number | job_description | job_delivered
1 1024 aaaaa 0
2 2048 bbbbb 0
tbl_delivery_items
delivery_item_id | delivery_item_delivery_id | delivery_item_job_id | delivery_item_toa | delivery_item_pallet_quantity | delivery_item_box_quantity
1 1 1 2014-08-18 16:23:04 2 1
何か案は?