I have a query like this
SELECT
Products.id,
SUM(IF(Products.id = b.product_id, t.account_nominal, 0)) as nominal
FROM bids b
INNER JOIN products ON products.id = b.product_id
INNER JOIN transactions t ON t.bid_id = b.id
WHERE b.status = 'win' AND b.product_id = Products.id
GROUP BY Products.id
LIMIT 1;
normally works
but I try to include with this query
SELECT
Products.city_id,
SUM(IF(Products.city_id IN (SELECT id FROM Cities WHERE Cities.id = Products.city_id), 1, 0)) AS total,
(SELECT
Products.id,
SUM(IF(Products.id = b.product_id, t.account_nominal, 0)) as nominal
FROM bids b
INNER JOIN products ON products.id = b.product_id
INNER JOIN transactions t ON t.bid_id = b.id
WHERE b.status = 'win' AND b.product_id = Products.id
GROUP BY Products.id
LIMIT 1) AS transaksi
FROM products Products
WHERE Products.city_id in (147)
GROUP BY Products.city_id;
Please help me, because when I run it then showing Operand should contain 1 column(s)
this is my code in Controller
'Products'=>function($q3){
return $q3
->select([
'Products.city_id',
'total' => "SUM(IF(Products.city_id IN (SELECT id FROM Cities WHERE Cities.id = Products.city_id), 1, 0))",
'transaksi' => "SELECT
Products.id,
SUM(IF(Products.id = b.product_id, t.account_nominal, 0)) as nominal
FROM bids b
INNER JOIN products ON products.id = b.product_id
INNER JOIN transactions t ON t.bid_id = b.id
WHERE b.status = 'win' AND b.product_id = Products.id
GROUP BY Products.id
LIMIT 1"
])
->group('Products.city_id',);