таблица Product которая HAS_MANY WarehouseStock. А в WarehouseStock есть id, product_id, warehouse_id, stock.
Мне нужно сделать такой запрос, чтобы выборка содержала только такие Product, у которых JOIN по product_id из WarehouseStock, но условие: WarehouseStock.id IS NULL OR WarehouseStock.warehouse_id = 1.
$criteria = new CDbCriteria();
$criteria->with = ['warehouseStocks'];
$criteria->addCondition('warehouseStocks.id IS NULL OR warehouseStocks.warehouse_id = :default_id');
$criteria->params = ['default_id' => 1];
$products = Product::model()->published()->in_stock()->findAll($criteria, ['pagination' => false]);
Но оно выводит не совсем то, что мне хотелось бы) Хочется, чтобы выведены были только те продукты, которые, у которых либо нет записей в WarehouseStock, либо есть, но только одна и в ней warehouse_id = 1. А оно получается выводит и те продукты, у который в WarehouseStock есть больше одной записи (а мне нужно не больше одной и только определенный warehouse_id)
Может кто-то мог бы помочь уточнить мой запрос?
С реализации SQL-запроса имеет смысл обратится в группах по БД.
Я думаю, что это не очень сложный запрос, просто я чуть профан) Но поделитесь, пожалуйста, ссылочкой на чат по БД, не состою пока... Благодарю.
MySQL или Postgres?
Обсуждают сегодня