The where condition in seqlelize with node below WHERE A->
where: {
[Op.or]: [{
ownerid: {
[Op.in]: rows.map(row => row.ownerid),
}
}, {
ownerid: {
[Op.notIn]: rows.map(row => row.ownerid),
},
shop: 1
}]
}
will generate
select *
from users
WHERE (ownerId in ('12', '166') ) or
(ownerId not IN ('12','166') and shop = 1 )
in postgresql
I want to add another condition to where ( UNION condition )to this where CONDITION : LIKE BELOW GIVEN
WHERE B->
where: {
ownerid: {
[Op.eq]: 13
}
shop: 1
}
I want to generate
(
select *
from users
where ownerId = 13 and shop = 1
)
union
(
select *
from users
WHERE (ownerId in ('12', '166') and `delete` is null) or
(ownerId not IN ('12','166') and shop = 1 and `delete` is null)
)
DESIRED RESULT
where: {
[Op.or]: [{
ownerid: {
[Op.in]: rows.map(row => row.ownerid),
}
}, {
ownerid: {
[Op.notIn]: rows.map(row => row.ownerid),
},
shop: 1
}]
}
PLUS
where: { ownerid: { [Op.eq]: 13 } shop: 1 }
TO CREATE
**
(
select *
from users
where ownerId = 13 and shop = 1
)
union
(
select *
from users
WHERE (ownerId in ('12', '166') and `delete` is null) or
(ownerId not IN ('12','166') and shop = 1 and `delete` is null)
)
**
PS : ID 13 is dynamic , the ownwer id 13 can change to another numbers.
CodePudding user response:
There is no need to use union if you want to join records from the same table but only with different conditions. You can just join them by OR.
The SQL might look like this:
select *
from users
WHERE (ownerId in ('12', '166') and `delete` is null) or
(ownerId not IN ('12','166') and shop = 1 and `delete` is null) or
(ownerId = 13 and shop = 1)
Sequelize query condition might look like this:
where: {
[Op.or]: [{
ownerid: {
[Op.in]: rows.map(row => row.ownerid),
}
}, {
ownerid: {
[Op.notIn]: rows.map(row => row.ownerid),
},
shop: 1
}, {
ownerid: 13,
shop: 1
}]
}
